GBK编码/GBK内码/Big5

GB2312-80/国标码/区位码

用2字节来编码汉字和中文符号,并兼容ASCII标准字符集。一级汉字3,755个,二级汉字3,008个,共收录6763个汉字。但是在Unicode中并不连续分布,散落在CJK统一汉字字符区 0x4E00-0x9FA5 的20902个汉字中。

编码方式

编码逻辑定义高8位称为“区”,低8位称为“位”, 所以也称 GB2312 为区位码。使用区位输入法,例如输入1601,即16区第1个字,得到码表中第一个汉字“啊”。一级汉字按拼音排序,二级汉字按部首排序,此外,该标准还包括标点符号,数种西文字母、图形、数码等符号682个。
编码时为了兼容 ASCII,两个字节使用比 0xA0 值要大的数据来存储。即查询时字符编码要加上 0xA0A0 才得到真正的存储数据,因此,中文字“啊”实际在内存的值是 0xB0A1 而不是 0x1001。也因此区位码定义了94区,每区有94位字符,即区码存储时取值 0xA1~0xFE 刚好有94个区,位码也一样。

缺点

只有6千来个常用汉字,仅覆盖中国大陆99.75%的使用频率,对于人名、古汉语等方面出现的罕用字就不能处理了,这导致了后来汉字扩展规范GBK及GB 18030汉字字符集的出现,而是完全向后兼容的,即GB 18030可以直接替换GBK和GB2312编码,GBK可以直接替换GB2312编码。

GBK

汉字百科字符集,收录超过2万汉字,是对原有的 GB2312 的扩充。现有的汉字数量绝不止这个数,还有大量未编码的字符,对于这些未进行编码的字符就称为非编码字符集 Noncoded Character Sets。

GBK字符分为5个部分,各部分内容及数量如下:

  1. GBK/1 717 GB 2312-80 and GB/T 12345-90 non-hanzi
  2. GBK/2 6,763 GB 2312-80 hanzi
  3. GBK/3 6,080 Hanzi from ISO 10646-1:1993
  4. GBK/4 8,160 8,059 hanzi from ISO 10646-1:1993 plus 101 additional hanzi
  5. GBK/5 166 Non-hanzi from Big Five and other characters

GB18030-2000

GB 18030-2000 标准发布时,兼容收录GB2312的一级汉字3,755个,二级汉字3,008个,增添汉字20,770个,符号为894个。GB18030的更新版本在2005年发布,保持兼容部分,增添汉字数量为63,481个,其它符号6,184个。这是一个六区字符集,囊括韩,蒙,藏,维吾尔,彝,傣泐。

编码空间分布三大块,单字节和双字节部分兼容ASCII字符集、GB2312和GBK,四字节部分兼顾 Unicode BMP。

  1. Single-byte: 00-7f
  2. Two-byte: 81-fe | 40-7e, 80-fe
  3. Four-byte: 81-fe | 30-39 | 81-fe | 30-39

BIG5

港澳台地区则多用大五码 BIG5,对应Win32平台 Code Page 950,收录一级汉字5,401个,二级汉字7,652个,符号441个。后者进行了修订形成BIG5+,增添汉字7,619个,符号数量则为913个。高位字节使用了0x81-0xFE,低位字节使用 0x40-0x7E,0xA1-0xFE。在Big5的分区 0x8140-0xA0FE 保留给使用者自定义字符,称为造字区,这种设计也是算得上奇葩的。Big5还重复地收录两个字:“兀、兀”(0xA461及0xC94A)、“嗀、嗀”(0xDCD1及0xDDFC)。

中文编码方案是最混乱的编码方案,名目之多,让人有点恼火的程度,而Unicode就是最佳下火良药。

猜你喜欢

转载自blog.csdn.net/m0_51429482/article/details/126357832
今日推荐