zer*_*oc8 12 character-encoding go
我正在尝试将ISO 8859-1编码的字符串转换为UTF-8.
以下函数适用于包含德语变音符号的testdata,但我不太确定符文(b)演员的编码源代码.是假设某种默认编码,例如ISO8859-1,还是有任何方法可以告诉它使用什么编码?
func toUtf8(iso8859_1_buf []byte) string {
var buf = bytes.NewBuffer(make([]byte, len(iso8859_1_buf)*4))
for _, b := range(iso8859_1_buf) {
r := rune(b)
buf.WriteRune(r)
}
return string(buf.Bytes())
}
Run Code Online (Sandbox Code Playgroud)
ANi*_*sus 14
rune是int32的别名,当涉及到编码时,假定符文具有Unicode字符值(代码点).因此,值b中rune(b)应该是一个Unicode值.对于0x00 - 0xFF,此值与Latin-1相同,因此您不必担心它.
然后你需要将符文编码为UTF8.但是这种编码只需将a转换[]rune为string.
这是一个不使用bytes包的函数示例:
func toUtf8(iso8859_1_buf []byte) string {
buf := make([]rune, len(iso8859_1_buf))
for i, b := range iso8859_1_buf {
buf[i] = rune(b)
}
return string(buf)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9556 次 |
| 最近记录: |