这篇博客介绍理论编码
ucs4
编码范围
- ucs4共有4个字节,理论允许的编码范围为
00000000 00000000 00000000 00000000
至
11111111 11111111 11111111 11111111
- 但最高位没有用,始终是0,所以实际的编码范围为
00000000 00000000 00000000 00000000
至
01111111 11111111 11111111 11111111
组、平面、行、码位
概念
- 第一个字节称为
组
- 第二个字节称为
平面
- 第三个字节称为
行
- 第四个字节称为
码位
个数
- 组从
00000000
至01111111
,共有 2 7 = 128 2^7=128 27=128个组。 - 平面、行、码位类推,像平面共有 2 8 = 256 2^8=256 28=256个平面
范围
- 组的范围就是除组之外后边几个bit的范围,所以每个组的范围都是0至 2 24 2^{24} 224
- 例如2组就是:
00000010 00000000 00000000 00000000
至00000010 111111111 111111111 111111111
- 平面、行、码位类推,码位就只有256个码位,没有范围之说了。
ucs4的0组17个平面
规定
- 统一码联盟规定,ucs4中目前只使用0组的17个平面进行编码,也就是从0组的0号平面编码到0组的第16号平面.
- 即所允许的编码范围为
00000000 00000000 00000000 00000000
至
00000000 00010000 11111111 11111111
- 每个平面有65536个编码,共17个平面,也就是说允许的编码有17×65536=1,114,112个.
17个平面也没有用完
- 目前实际编码的字符有238605个,这17个平面也没有用完.
- 这些字符分布在平面0、平面1、平面2、平面14、平面15、平面16上,且每个平面也没有都用完,都有空闲的部分.
- 其中平面15和平面16是专用区,如果以后再发明了某种字符且被世界认可,就在这两个平面编码.
BMP编码
- BMP编码就是UCS4中0组0平面的范围
- 也就是00000000 00000000 xxxxxxxx xxxxxxxx
- 它其实就是UCS2理论编码,因为是理论编码,前边的0存在不存在都无所谓.