首页 > 解决方案 > Go 如何将 3 字节序列转换为适当的 Unicode 字符?

问题描述

如果我们有字符世界,它们对应于字节 228 184 150 231 149 140,每个字节 3 个字节。如果我只是有[]byte{228, 184, 150, 231, 149, 140},Go 怎么知道将它们分成 3 个字节?如果我尝试打印出来fmt.Println(string([]byte{228})),我得到一个谜?象征。是不是当 Go 编译器看到 228 并且知道它需要读取更多字节才能找到正确的字符时?

标签: goencodingutf-8byte

解决方案


代码点的第一个字节指定代码点中的总字节数。有关详细信息,请参阅维基百科文章。Go 语言和库使用此计数将字节序列转换为代码点(也称为符文)

当写入 228 且没有两个尾随字节时,终端接收到无效的 UTF-8 字节序列。您的终端将无效字节显示为替换字符 �。

有关Go 语言中的字符串、字节和符文的更多详细信息,请参阅Go 博客字符串文章。


推荐阅读