Unicode编码

UTF8与Unicode

来源

Unicode

Unicoide 的全称是 Universal Multiple-Octet Coded Character Set(通用多八位字符集,简称 UCS)。
规定了各种字符的编码。
而下面都是具体的编码二进制的存储方式。

UTF-32

规定,一个字符使用四个字节存储,也就是 32 位,这样就能涵盖现有 Unicode 包含的所有字符。

UTF-16

UTF-16 用二个字节来表示基本平面,用四个字节来表示扩展平面,是一种变长编码方式。
偷一张图

UTF-8

而UTF-8也是一种变长编码方式,规定了如何存储。
UTF-8 的编码规则如下(U+ 后面的数字代表 Unicode 字符代码):

U+ 0000 ~ U+ 007F: 0XXXXXXX
U+ 0080 ~ U+ 07FF: 110XXXXX 10XXXXXX
U+ 0800 ~ U+ FFFF: 1110XXXX 10XXXXXX 10XXXXXX
U+10000 ~ U+1FFFF: 11110XXX 10XXXXXX 10XXXXXX 10XXXXXX

UTF-8 通过开头的标志位位数实现了变长。对于单字节字符,只占用一个字节,实现了向下兼容 ASCII,并且能和 UTF-32 一样,包含 Unicode 中的所有字符,又能有效减少存储传输过程中占用的空间。

对应C#的Encoding类

Encoding.Default取决于电脑的.net环境的设置。

char

仅就C#中的string或者char并不存在编码一说,无论是Convert.ToInt32(c)或者(char)20013等都仅仅是和Unicode定义的字符顺序。
和任何编码都没有关系,只有在字符保存在文件中,或者用socket传输以及控制台的输入输出流才会涉及编码。


Unicode编码
https://www.kuanmi.top/2023/02/06/string/
作者
KuanMi
发布于
2023年2月7日
许可协议