1、unicode是编码字符集,而UTF-8是字符集编码
2、字符集为每一个【字符】分配一个唯一的ID(学名为 码位/ 码点/ Code Point)
3、比如"知"的唯一ID(unicode)是30693,记作 U+77E5(30693的十六进制为0X77E5),如果要把这个汉保存到计算机中,机器码是多少?
4、计算机内部存储的形式是0101的二进制数字串,汉保存在计算机肯定也是0101的数字串,"知"的unicode为U+77E5,
转换为二进制为111 0111 1110 0101,但是"知"保存到计算机中并不是111 0111 1110 0101
5、保存到计算机中,要取决于那种字符集编码,如果用utf8,那么"知"字在计算机保存的值为0xE79FA5,也就是11100111 10011111 10100101
6、那么上面这个是怎么来的?UTF-8顾名思义是一套以8位一个编码单位的可变长编码,会将一个码位编码为 1 到 4 个字节
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
根据上表中的编码规则,"知"的码位U+77E5属于第三行的范围:
7 7 E 5
0111 0111 1110 0101 二进制的 77E5
--------------------------------------
0111 011111 100101
1110XXXX 10XXXXXX 10XXXXXX
E A 9 F A 5
U+77E5 按照 UTF-8 编码为字节序列 E79FA5 的过程,反之亦然。
网友评论