【发布时间】:2020-01-03 18:31:04
【问题描述】:
我想使用chardet 和golang.org/x/text 将非utf-8 文件转换为utf-8。但是,到目前为止,我发现的所有代码示例都要求用户对所需的转换方向进行硬编码。例如:
package main
import (
"fmt"
"io/ioutil"
"os"
"golang.org/x/text/encoding/charmap"
)
func main() {
// Write the string
// encoded to Windows-1252
encoder := charmap.Windows1252.NewEncoder()
s, e := encoder.String("This is sample text with runes Š")
if e != nil {
panic(e)
}
ioutil.WriteFile("example.txt", []byte(s), os.ModePerm)
// Decode to UTF-8
f, e := os.Open("example.txt")
if e != nil {
panic(e)
}
defer f.Close()
decoder := charmap.Windows1252.NewDecoder()
reader := decoder.Reader(f)
b, err := ioutil.ReadAll(reader)
if err != nil {
panic(err)
}
fmt.Println(string(b))
}
我需要如何更改以下行:
decoder := charmap.Windows1252.NewDecoder()
接受 IANA 代码以选择所需的解码器? (chardet 返回小写代码页名称,例如windows-1250、windows-1252 等)
【问题讨论】:
标签: go character-encoding file-conversion iana