Go 字符串编码
Go 字符串介绍
GoLang 字符串 string
本质上是作为字节数组保存的,使用的编码为 utf-8。
可直接将 string
转换为 utf-8 格式的字节数组:
s := "GoLang 字符串"
utf8Bytes := []byte(s)
Go 中的字符串与 GB18030 的编解码
Go 最新版本应该是没有完全支持 GB18030-2022 的,可以看到一个打开的 issue: x/text: incorrectly decodes all GBK/GB18030 double-byte PUA characters to U+FFFD
string
按照 GB18030 编码为字节数组
s := "GoLang 字符串"
gbEncoder := simplifiedchinese.GB18030.NewEncoder()
gbBytes, _, err := transform.Bytes(gbEncoder, []byte(s))
if err != nil {
log.Fatal(err)
}
- 字节数组按照 GB18030 解码为
string
gbDecoder := simplifiedchinese.GB18030.NewDecoder()
utf8Bytes, _, err := transform.Bytes(gbDecoder, gbBytes)
if err != nil {
log.Fatal(err)
}
result := string(utf8Bytes)