平面 - plane
共 17 个平面,每个平面占 65536 个字符
基本多文种平面 - Basic Multilingual Plane(0x0~0xFFFF)
其余16种补充/辅助平面(0x10000 ~ 0x10FFFF)
编码空间
0x0~ 0x10FFFF
存储定义
UCS - Universal Character Set
ISO/IEC 10646 定义
- UCS-2
编码空间为 0x0 ~ 0xFFFF
无辅助平面
兼容 Unicode,保留 0xD800 ~ 0xDFFF - UCS-4
旧定义
编码空间为 0x0 ~ 0x7FFFFFFF
新定义
编码空间限制为 Unicode (0x0~ 0x10FFFF)
ISO 承诺不会为超过 0x10FFFF 进行编码
UTF - Unicode Transformation Format
UTF-8
变长编码(1~4字节)
编码空间为 0x0 ~ 0x10FFFF
-
对于单字节的符号
字节第一位设为 0
后面7位填充编码值
对于 0x0~0x7F, UTF-8 和 ASCII 码是一致的 -
对于 n 字节的符号(n>1)
第一个字节的前 n 位 都是1
第 n + 1 位设置为 0
后面字节的前两位为 10
其余空位填充为编码值 -
旧的定义
定义1~6字节
RFC 2044
RFC 2279 -
新的定义 RFC 3629
定义为1~4字节编码范围 字符数 Unicode UTF-8 0x000000 ~ 0x00007F 128 00000000 00000000 0zzzzzzz 0zzzzzzz(00-7F) 0x000080 ~ 0x0007FF 1920 00000000 00000yyy yyzzzzzz 110yyyyy(C0-DF)10zzzzzz(80-BF) 0x000800 ~ 0x00D7FF
0x00E000 ~ 0x00FFFF61440 00000000 xxxxyyyy yyzzzzzz 1110xxxx(E0-EF)10yyyyyy(80-BF)10zzzzzz(80-BF) 0x010000 ~ 0x10FFFF 1048576 000wwwxx xxxxyyyy yyzzzzzz 11110www(F0-F7)10xxxxxx(80-BF)10yyyyyy(80-BF)10zzzzzz(80-BF)
UTF-16
变长编码(2或4字节)
编码空间为 0x0 ~ 0x10FFFF
- 与 UCS-2 区别
UTF-16 是 UCS-2 父集
当表示 BMP 时, 与 USC-2 编码一致都是16-bit
当表示辅助平面时,UTF-16为 32-bit,而UCS-2不能表示 - 辅助平面表示
码位值 - 0x10000 得到 20-bit 的值(0x0 ~ 0xFFFFF)
该值前10位 + 0xD800(0xD800 ~ 0xDBFF)
该值后10位 + 0xDC00(0xDC00 ~ 0xDFFF )
连接以上两个值得到最终编码值
UTF-32
固定 32-bit 编码,与 Unicode 编码数值一致
编码空间为 0x0 ~ 0x10FFFF
- 与 UCS-4 区别
旧定义: UTF-32是 UCS-4 的一个子集
新定义: 可以认为与 UCS-4 是相同
网友评论