Unicode编码
ref
note
相关概念:
Unicode (”Universal Multiple-Octet Coded Character Set”,简称 UCS, 俗称 “unicode“)
UTF(UCS Transfer Format)
Unicode广义上分为Unicode编码集和UTF编码规则
UTF-8:
一种变长编码规则,每次传输数据传8位
Unicode一个中文字符占2个字节,而UTF-8一个中文字符占3个字节,有对应规则转换
传输规则:
-
每次只能传8位,所以范围是0-65535
-
可以把unicode的范围划分为4个层级,对应使用1-4个字节,做成变长
-
第一层:0-127,即 0 0 0~ 2 7 − 1 2^7-1 27−1
传1个字节就行,用最高位 置1表示,即
0XXXXXXX
,剩下7位表示符号,对应ASCII -
第二层:128-2047, 2 7 2^7 27~ 2 10 − 1 2^{10}-1 210−1
传2个字节,即
110XXXXX 10XXXXXX
,5位表示层级,11位表示符号 -
第三层:2048-65535, 2 10 2^{10} 210~ 2 16 − 1 2^{16}-1 216−1
传3个字节,即
1110XXXX 10XXXXXX 10XXXXXX
-
第四层:65536-…,
传4个字节,即
11110XXX 10XXXXXX 10XXXXXX 10XXXXXX
,共有21位表示符号,可以表示约104万个字符
Unicode:
为世界上所有字符都分配了一个唯一的数字编号
但是,只规定了每个字符的数字编号是多少,并没有规定这个编号如何存储
因此,这需要一套编码规则,比如UTF-8
Unicode用于解决:
- 避免不同编码方案,同编码不同字符的尴尬问题
- 避免不同编码方案,不同编码长度的问题
解决办法:
采用Unicode方案——为世界上所有字符都分配了一个唯一的数字编号,一般用十六进制表示。
其他:
计算机存储的最小单位就是字节