GOLANG看了 ioutil.readXXX系列里 貌似没有类似 以UTF8等方法来打开
加入文本是gbk编码 我想加载进来后 以UTF8文件形式打开 有什么推荐吗
~~~
func OpenFile(path string) (str string, err error) {
f, err := os.Open(path)
if err != nil {
return "", err
}
str0, err := ioutil.ReadAll(f)
if err != nil {
return "", err
}
str = string(str0)
return str, nil
}
~~~
文件打开的时候,不可能指定以什么字符集打开。
因为打开的文件都是2进制数组,是[]byte,不存在字符集。
和字符集有关的是string。
你需要用的是这个库
https://pkg.go.dev/golang.org/x/text/encoding
https://pkg.go.dev/golang.org/x/text/encoding/simplifiedchinese
#1
更多评论
```go
func OpenFile(path string) (str string, err error) {
f, err := os.Open(path)
if err != nil {
return "", err
}
str0, err := ioutil.ReadAll(f)
if err != nil {
return "", err
}
str = string(str0)
return ConvertToString(str, "gbk", "utf-8"), nil
}
func ConvertToString(src string, srcCode string, tagCode string) string {
srcCoder := mahonia.NewDecoder(srcCode)
srcResult := srcCoder.ConvertString(src)
tagCoder := mahonia.NewDecoder(tagCode)
_, cdata, _ := tagCoder.Translate([]byte(srcResult), true)
result := string(cdata)
return result
}
```
#2