猿问

如何在 Golang 中解码 UTF-16BE CSV 文件

我正在尝试在 Golang 中解码以 UTF-16BE 编码的 CSV 文件。我必须为新阅读器调用的 charmap ISO 字符号是多少?

我想调用

csv.NewReader(charmap.XXXX.NewDecoder().Reader(file))

XXXX 的值应该是多少?


SMILET
浏览 165回答 2
2回答

拉丁的传说

您可以使用golang.org/x/text/encoding/unicode.UTF16从目标 UTF-16 Little/Big-Endian 编码创建解码器到 UTF-8。下面的代码显示了 UTF-16 LE 的工作示例(Go playground):dec := unicode.UTF16(unicode.LittleEndian, unicode.UseBOM).NewDecoder()utf16r := getUTF16LittleEndianCSVReader()utf8r := transform.NewReader(utf16r, dec)csvr := csv.NewReader(utf8r)records, err := csvr.ReadAll()// TODO: handle errfmt.Printf("%#v", records)// [][]string{[]string{"id", "name"}, []string{"1", "foo"}}切换到 Big-endian 应该像下面这样简单:enc := unicode.UTF16(unicode.BigEndian, unicode.UseBOM).NewDecoder()

宝慕林4294392

你试过这个吗?unicode.UTF16(BigEndian, UseBOM)

慕尼黑5688855

经过一番审查,这段代码提供了一种将 UTF16 解码为 UTF8 的简单方法:https://gist.github.com/bradleypeabody/185b1d7ed6c0c2ab6cec#file-gistfile1-go
随时随地看视频慕课网APP

相关分类

Go
我要回答