ISO-8859-1 到 UTF8 的转换

以下代码段将ISO-8859-1编码文本转换为UTF8. 我不完全明白这里发生了什么。有人可以解释为什么会这样吗?


var utf8Buf bytes.Buffer

for _, b := range iso8859Slice {

  utf8Buf.WriteRune(rune(b))

}

utf8Str := utf8Buf.String()


holdtom
浏览 484回答 2
2回答

暮色呼如

循环获取 iso8859Str 切片的每个字节,假设它是类型 []byte由于 iso-8859-1 被合并为 Unicode 的前 256 个代码点,因此您无需从 iso-8859-1 实际转换为 Unicode。但是,您需要做的是对 Unicode 符文进行 UTF-8 编码。这是由 Buffer.WriteRune() 完成的WriteRune 将 Unicode 代码点 r 的 UTF-8 编码附加到缓冲区

四季花海

第一:如果是字符串类型,则不起作用iso8859Str!但是如果 iso8859Str是 []byte 类型,您的range子句会遍历字节,这就是 unicode 的设计方式:ISO 8859-1 中的字节对应于相同的 unicode 代码点。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go