以下代码段将ISO-8859-1编码文本转换为UTF8. 我不完全明白这里发生了什么。有人可以解释为什么会这样吗?var utf8Buf bytes.Bufferfor _, b := range iso8859Slice { utf8Buf.WriteRune(rune(b))}utf8Str := utf8Buf.String()
2 回答
暮色呼如
TA贡献1853条经验 获得超9个赞
循环获取 iso8859Str 切片的每个字节,假设它是类型 []byte
由于 iso-8859-1 被合并为 Unicode 的前 256 个代码点,因此您无需从 iso-8859-1 实际转换为 Unicode。
但是,您需要做的是对 Unicode 符文进行 UTF-8 编码。这是由 Buffer.WriteRune() 完成的
WriteRune 将 Unicode 代码点 r 的 UTF-8 编码附加到缓冲区
四季花海
TA贡献1811条经验 获得超5个赞
第一:如果是字符串类型,则不起作用iso8859Str
!
但是如果 iso8859Str
是 []byte 类型,您的range
子句会遍历字节,这就是 unicode 的设计方式:ISO 8859-1 中的字节对应于相同的 unicode 代码点。
- 2 回答
- 0 关注
- 483 浏览
添加回答
举报
0/150
提交
取消