中文字符编码
在使用redis时,发现存入的中文字符都变成了编码形式"\xE4\xB8\xAD",于是好奇这是什么编码呢,\xXX又是什么表示形式呢?
Part1
我们首先来看下汉字中字的多种编码:
1 | GB2312 D6D0 |
下面是我们经常看到的各种编码表示形式
1 | \u4E2D |
可以看出,这几种表示形式虽然各不相同,但无非是Unicode的4E2D码点或UTF-8的E4B8AD码点。其中中中的20013是4E2D对应的十进制数值。
由于各种编码的码点经常使用十六进制的形式来表示,所以在各类使用场景下就有了上述各种不同的表示形式。
Part2
打开VSCode,新建文本文件并输入汉字中,借助Hex Editor插件可以看到文件对应的二进制格式。
使用UTF-8 with BOM编码时,开头的EF BB BF表示这是UTF-8编码。
1 | // UTF-8 |
使用UTF-16 LE编码时,开头的FF FE表示使用小端对齐。
使用UTF-16 BE编码时,开头的FE FF表示使用大端对齐。
1 | // UTF-16 LE |
参考
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Robby!
评论

