【发布时间】:2016-04-24 00:32:31
【问题描述】:
有 invalid byte sequences 无法转换为 Unicode 字符串。在 Go 中将 []byte 转换为 string 时如何检测到这一点?
【问题讨论】:
-
如果您的编码是 UTF-8:
unicode/utf8.Valid -
阅读blog.golang.org/strings --
string转换只是一个字节对字节的复制,当你range在代码点上时你会遇到无效的 UTF-8 (或转换为[]rune) 并获得 0xFFFD,即 Unicode 替换字符(规范为 here)。这些都不会崩溃,因此您只需要检查有效性是否对您的应用程序独立重要(或者如果您计划做其他事情将在错误的 utf8 上崩溃)。 -
这是一个无效 UTF-8 的示例:play.golang.org/p/6yHonH0Mae
标签: string unicode encoding go utf-8