unicode utf-8 gb18030 gb2312 gbk各种编码对比(9)

古汉语等方面出现的罕用字,GB 2312不能处理,这导致了后来GBKGB 18030汉字字符集的出现。

GB 2312中对所收汉字进行了“分区”处理,每区含有94个汉字/符号。这种表示方式也称为区位码

  • 01-09区为特殊符号。
  • 16-55区为一级汉字,按拼音排序。
  • 56-87区为二级汉字,按部首/笔画排序。

10-15区及88-94区则未有编码。

举例来说,“啊”字是GB2312之中的第一个汉字,它的区位码就是1601。

 字节结构

在使用GB2312的程序中,通常采用EUC储存方法,以便兼容于ASCII浏览器编码表上的“GB2312”,通常都是指“EUC-CN”表示法。

每个汉字及符号以两个字节来表示。第一个字节称为“高位字节”,第二个字节称为“低位字节”。

“高位字节”使用了0xA1-0xF7(把01-87区的区号加上0xA0),“低位字节”使用了0xA1-0xFE(把01-94加上0xA0)。 由于一级汉字从16区起始,汉字区的“高位字节”的范围是0xB0-0xF7,“低位字节”的范围是0xA1-0xFE,占用的码位是72*94=6768。其中有5个空位是D7FA-D7FE。

例如“啊”字在大多数程序中,会以两个字节,0xB0(第一个字节)0xA1(第二个字节)储存。(与区位码对比:0xB0=0xA0+16,0xA1=0xA0+1)。

 

EUC-CN(网上下到的编码表就是这个)(gb2312的字符串截取也是按照该表截取的)

EUC-CNGB 2312最常用的表示方法。浏览器编码表上的“GB2312”,通常都是指“EUC-CN”表示法。

GB 2312字符使用两个字节来表示。

“第一位字节”使用0xA1-0xF7
“第二位字节”使用0xA1-0xFE

举例来说,“啊”字是GB 2312之中的第一个汉字,它的区位码是1601。

在EUC-CN之中,它把0xA0+16=0xB0,0xA0+1=0xA1,得出0xB0A1。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/1734.html