分享
golang读取文件编码转换问题
xlplbo · · 12638 次点击 · · 开始浏览这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。
首先导入包
"code.google.com/p/mahonia"
可以通过此链接获得此包
https://code.google.com/p/mahonia/
参考代码如下:
package main
import (
"bufio"
"code.google.com/p/mahonia"
"log"
"os"
"strings"
"time"
)
func main() {
//创建日志文件
t := time.Now()
filepath := "./log_" + strings.Replace(t.String()[:19], ":", "_", 3) + ".txt"
file, err := os.OpenFile(filepath, os.O_CREATE, 0666)
if err != nil {
log.Fatal("create log file failed!")
}
defer file.Close()
wFile := bufio.NewWriter(file)
wFile.WriteString(readfile())
wFile.Flush()
}
func readfile() string {
f, err := os.Open("ex7.txt")
if err != nil {
return err.Error()
}
defer f.Close()
buf := make([]byte, 1024)
//文件ex7.txt的编码是gb18030
decoder := mahonia.NewDecoder("gb18030")
if decoder == nil {
return "编码不存在!"
}
var str string = ""
for {
n, _ := f.Read(buf)
if 0 == n {
break
}
//解码为UTF-8
str += decoder.ConvertString(string(buf[:n]))
}
return str
}
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
关注微信12638 次点击
添加一条新回复
(您需要 后才能回复 没有账号 ?)
- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码` - 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传
收入到我管理的专栏 新建专栏
首先导入包
"code.google.com/p/mahonia"
可以通过此链接获得此包
https://code.google.com/p/mahonia/
参考代码如下:
package main
import (
"bufio"
"code.google.com/p/mahonia"
"log"
"os"
"strings"
"time"
)
func main() {
//创建日志文件
t := time.Now()
filepath := "./log_" + strings.Replace(t.String()[:19], ":", "_", 3) + ".txt"
file, err := os.OpenFile(filepath, os.O_CREATE, 0666)
if err != nil {
log.Fatal("create log file failed!")
}
defer file.Close()
wFile := bufio.NewWriter(file)
wFile.WriteString(readfile())
wFile.Flush()
}
func readfile() string {
f, err := os.Open("ex7.txt")
if err != nil {
return err.Error()
}
defer f.Close()
buf := make([]byte, 1024)
//文件ex7.txt的编码是gb18030
decoder := mahonia.NewDecoder("gb18030")
if decoder == nil {
return "编码不存在!"
}
var str string = ""
for {
n, _ := f.Read(buf)
if 0 == n {
break
}
//解码为UTF-8
str += decoder.ConvertString(string(buf[:n]))
}
return str
}