ISO-8859-1转换为UTF8

时间:2013-09-18 11:21:13

标签: utf-8 go iso-8859-1

以下代码段将ISO-8859-1个编码文本转换为UTF8。我不太清楚这里发生了什么。有人能解释为什么会这样吗?

var utf8Buf bytes.Buffer
for _, b := range iso8859Slice {
  utf8Buf.WriteRune(rune(b))
}
utf8Str := utf8Buf.String()

2 个答案:

答案 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代码点。