为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
SMILET 2023-06-01 14:09:44
我正在尝试在 Golang 中解码以 UTF-16BE 编码的 CSV 文件。我必须为新阅读器调用的 charmap ISO 字符号是多少?我想调用csv.NewReader(charmap.XXXX.NewDecoder().Reader(file))XXXX 的值应该是多少?
查看完整描述

2 回答

?
拉丁的传说

TA贡献1789条经验 获得超8个赞

您可以使用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 err


fmt.Printf("%#v", records)

// [][]string{[]string{"id", "name"}, []string{"1", "foo"}}

切换到 Big-endian 应该像下面这样简单:


enc := unicode.UTF16(unicode.BigEndian, unicode.UseBOM).NewDecoder()


查看完整回答
反对 回复 2023-06-01
?
宝慕林4294392

TA贡献2021条经验 获得超8个赞

你试过这个吗?

unicode.UTF16(BigEndian, UseBOM)


查看完整回答
反对 回复 2023-06-01
?
慕尼黑5688855

TA贡献1848条经验 获得超2个赞

经过一番审查,这段代码提供了一种将 UTF16 解码为 UTF8 的简单方法:

https://gist.github.com/bradleypeabody/185b1d7ed6c0c2ab6cec#file-gistfile1-go


查看完整回答
反对 回复 2023-06-01
  • 2 回答
  • 0 关注
  • 164 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信