Unicode 和 UTF-8 的简单说明

简单来说:
Unicode 是「字符集」
UTF-8 是「编码规则」

其中:
字符集:为每一个「字符」分配一个唯一的 ID(学名为码位 / 码点 / Code Point)
编码规则:将「码位」转换为字节序列的规则(编码/解码 可以理解为 加密/解密 的过程)

Unicode相当于仓库,里面的货物是字符,UTF-8是货车,装载的是字符。

UTF-8编码方式:
1. 单字节的字符,字节的第一位设为0,对于英语文本,UTF-8码只占用一个字节,和ASCII码完全相同;
2. n个字节的字符(n>1),第一个字节的前n位设为1,第n+1位设为0,后面字节的前两位都设为10,这n个字节的其余空位填充该字符unicode码,高位用0补足。

这样就形成了如下的UTF-8标记位:
0xxxxxxx
110xxxxx 10xxxxxx
1110xxxx 10xxxxxx 10xxxxxx
11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
… …

编码 内容
ASCII 0×20以下的字节”控制码”,从128 到255”扩展字符集“,一个字节
GB2312 对 ASCII 的中文扩展,7000多个简体汉字,高字节(0xA1~0xF7)低字节(0xA1~0xFE),两个字节
GBK 包括了GB2312 的所有内容,同时又增加了近20000个新的汉字(包括繁体字)和符号
GB18030 GBK基础上加了几千个新的少数民族的字

“DBCS“(Double Byte Charecter Set 双字节字符集)。在DBCS系列标准里,最大的特点是两字节长的汉字字符和一字节长的英文字符并存于同一套编码方案里,因此他们写的程序为了支持中文处理,必须要注意字串里的每一个字节的值,如果这个值是大于127的,那么就认为一个双字节字符集里的字符出现了。


以上信息由https://www.zhihu.com/question/23374078剪辑,想要了解详细信息,请查看。
此文档会不断更新完善。若用错误,感谢指点。

猜你喜欢

转载自blog.csdn.net/freiheit_zz/article/details/78792183
今日推荐