解决方法:
引入第三发转码包:
git clone https://github.com/axgle/mahonia.git
示例:
1 package main 2 import ( 3 "bufio" 4 "fmt" 5 "io" 6 "mahonia" //编码转换 7 "os" 8 ) 9 10 func main() { 11 var enc mahonia.Decoder 12 enc = mahonia.NewDecoder("gbk") 13 //读取文件的案例 14 //读取文件的内容并显示在终端,使用os.Open, file.Close, bufio.NewReader(), reader.ReadString 15 file, err := os.Open("e:/test.txt") 16 if err != nil { 17 fmt.Println("open file err=", err) 18 } 19 20 //当函数退出时,要及时关闭file 21 defer file.Close() //防止内存泄露 22 //创建一个 *Reader , 是带缓冲的, 默认缓冲区为4096个字节 23 reader := bufio.NewReader(file) 24 //循环读取文件的内容 25 for { 26 str, err := reader.ReadString(' ') //读到一个换行就结束 27 if err == io.EOF { //io.EOF表示文件的末尾 28 break 29 } 30 //输出内容 31 fmt.Println("UTF-8 to GBK:", enc.ConvertString(str)) 32 } 33 fmt.Println("文件读取结束") 34 }