Go 如何将3字节序列转换为相应的Unicode字符?

Go 如何将3字节序列转换为相应的Unicode字符?,go,encoding,utf-8,byte,Go,Encoding,Utf 8,Byte,如果我们有这些角色,世界, 它们对应于字节228184150231149140,每个字节3个。如果我只有[]字节{228,184,150,231,149,140},Go怎么知道把它们分成3个字节? 如果我试图打印出fmt.Println(字符串([]字节{228})),我会得到一个谜团吗?象征。是在Go编译器看到228并知道需要读取更多字节才能找到正确的字符时吗?代码点的第一个字节指定代码点中的总字节数。有关详细信息,请参阅。Go语言和库使用此计数将字节序列转换为代码点(也称为符文) 当写入22

如果我们有这些角色,世界, 它们对应于字节228184150231149140,每个字节3个。如果我只有
[]字节{228,184,150,231,149,140}
,Go怎么知道把它们分成3个字节?
如果我试图打印出
fmt.Println(字符串([]字节{228}))
,我会得到一个谜团吗?象征。是在Go编译器看到228并知道需要读取更多字节才能找到正确的字符时吗?

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

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


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

这是UTF8的工作原理,与Go无关。我发现,如果您知道字符串将包含非ASCII字符,最好转换为[]符文。我在提问之前阅读了文章;我只是不明白228如何表示序列中有3个字节。我在另一篇博文中还发现,如果您知道字符不仅是ASCII字符,那么最好将字符串转换为[]符文。@100Bugson墙壁转换为[]符文有时是正确的,但是直接使用
for range
和unicode/utf8包使用UTF-8通常是方便的。