以下代码段将ISO-8859-1
个编码文本转换为UTF8
。我不太清楚这里发生了什么。有人能解释为什么会这样吗?
var utf8Buf bytes.Buffer
for _, b := range iso8859Slice {
utf8Buf.WriteRune(rune(b))
}
utf8Str := utf8Buf.String()
答案 0 :(得分:2)
循环取iso8859Str切片的每个字节,假设它是[]byte
类型
由于iso-8859-1被作为Unicode的前256个代码点,因此您无需从iso-8859-1实际转换为Unicode。
但是,您需要做的是UTF-8编码Unicode符文。这是由Buffer.WriteRune()
完成的WriteRune将Unicode代码点r的UTF-8编码附加到缓冲区
答案 1 :(得分:1)
首先:如果iso8859Str
的类型为字符串,则无法正常工作!
但如果iso8859Str
的类型为[] byte,则range
子句将迭代字节和
这就是unicode的设计方式:ISO 8859-1中的字节对应同一个unicode代码点。