## 注意:
需要下一個轉碼器,解決亂碼問題
[https://github.com/axgle/mahonia](https://github.com/axgle/mahonia)
安裝:
~~~
go get github.com/axgle/mahonia
~~~
## 一、實例
注意:這里文件001.txt是以讀取,每行數據中不同類型數據以,分割
例:
a1,623023199903081812,M,上海
a2,623023199903081812,M,上海
a3,623023199999903081812,M,上海
a4,623023199903081812,M,上海
~~~
package main
import (
"io/ioutil"
"fmt"
"strings"
"github.com/axgle/mahonia"
"os"
"bufio"
"io"
)
func main() {
//read 和 read2 的區別:read沒有使用緩沖 read2 使用了緩沖
//read()
read2()
}
func read() {
contentBytes, err := ioutil.ReadFile("G:\\pachong\\001.txt")
if err != nil {
fmt.Println("讀入失敗", err)
}
//轉字符串
contentStr := string(contentBytes)
//逐行打印
//按行分割
lineStrs := strings.Split(contentStr, "\n\r")
for _, lineStr := range lineStrs {
//fmt.Println(lineStr)
//轉碼
newStr := ConvertEncoding(lineStr, "GBK")
fmt.Println(newStr)
}
}
//處理亂碼
func ConvertEncoding(srcStr string, encoding string) (dstStr string) {
enc := mahonia.NewDecoder(encoding)
utfStr := enc.ConvertString(srcStr)
dstStr = utfStr
return
}
//緩沖讀
func read2() {
//打開文件
file, _ := os.Open("G:\\pachong\\001.txt")
//關閉資源
defer file.Close()
//新建一個緩沖區,把內容先放到緩沖區
reader := bufio.NewReader(file)
//循環
for {
lineBytes, _, err := reader.ReadLine()
if err == io.EOF {
break
}
gbkStr := string(lineBytes)
newStr := ConvertEncoding(gbkStr, "GBK")
fmt.Println(newStr)
}
}
~~~
- 一、數組
- 二、切片
- 三、copy
- 四、MAP
- 五、結構體
- 六、結構體參數
- 七、面向”對象“
- 1、匿名字段
- 2、方法
- 3、包和封裝
- 4、接口
- 5、異常處理
- 八、Json
- 九、文件操作
- 1、寫文件
- 2、讀取文件內容
- 3、拷貝文件
- 十、反射
- 1、查看類型,字段和方法
- 2、查看匿名字段
- 3、修改基本類型的值
- 4、修改結構體的值
- 5、調用方法
- 十一、并發編程
- 1、并行和并發
- 2、協程
- 3、runtime包
- 5、channel的使用
- 6、close
- 7、定時器
- 8、select
- 9、協程同步鎖
- 十二、socket編程
- 十三、Http編程
- 十四、并發爬蟲和數據處理
- 1、簡易爬蟲實例
- 2、并發爬取圖片
- 3、讀文件中的數據
- 4、數據清洗
- 其他
- 1、推薦文章