强答下吧!

我的理解,把 utf8 转化为字符串是纯粹的 ASCII 码了,可以不用考虑客户端的编码。如果非也,直接使用原始编码,在 win 的 cmd (默认是 gbk 编码)下访问某个包含 utf8 编码数据的接口,终端会打印什么鬼出来呢?可以测试一下,基本就是那种一坨的效果 。

还有一点,接口的编码并不一定 utf8,还有可能是其他编码,世界上的编码那么多。只要编码不相同,显示效果基本都是一坨,这不是很挫吗?

当然,把 utf8 用文本表示也是有一些缺点吧。比如:

第一点,把 utf8 转化这种 escape 的文本会导致网络传输数据量变大,比如 "世" 的 utf8 编码是 0x4e16,只占了 2 个字节,字符串形式是 \u4e16,占了 6 个字节。

第二点,对于支持 utf8 的编程语言,需要花费时间进行 unescape 转化为 utf8 或 unicode(二进制)。当然,现在应该基本不存在不支持 utf8 的语言了。

Go 中如何将 escaped 的 uft8 转化为真正的 unicode,贴一个示例函数,如下:

网上找了一些例子,都是通过 \u 分隔,将字符串转化为 utf8 的方式,感觉不是很通用。上面的例子是 utf8 字符串形式转化为 unicode 的代码。


欢迎关注我的专栏,Golang 之旅,见证我的 Golang 学习历程。