计算机编码总结(中)

GB2312 字符集和编码说明(码表见http://www.cnblogs.com/thinksasa/p/3956458.html)

(1)GB2312 字符集

GB2312 是汉字字符集和编码的代号,中文全称为“信息交换用汉字编码字符集”,由*国家标准总局发布,一九八一年五月一日实施。GB 是“国标” 二字的汉语拼音缩写。

(2)GB2312 字符集 (character set) 只收录简化字汉字,以及一般常用字母和符号,主要通行于*地区和新加坡等地。

(3)GB2312 共收录有 7445 个字符,其中简化汉字 6763 个,字母和符号 682 个。

(4)GB2312 将所收录的字符分为 94 个区,编号为 01 区至 94 区;每个区收录 94 个字符,编号为 01 位至 94 位。GB2312 的每一个字符都由与其唯一对应的区号和位号所确定。例如:汉字“啊”,编号为 16 区 01 位。

 

(5)GB2312 字符集的区位分布表:
区号    字数    字符类别  
    01      94    一般符号  
    02      72    顺序号码  
    03      94    拉丁字母  
    04      83    日文假名  
    05      86    Katakana  
    06      48    希腊字母  
    07      66    俄文字母  
    08      63    汉语拼音符号  
    09      76    图形符号  
 10-15            备用区  
 16-55    3755    一级汉字,以拼音为序  
 56-87    3008    二级汉字,以笔划为序  
 88-94            备用区   

 

GB2312 编码

举例来说,“啊”字是GB2312之中的第一个汉字,它的区位码就是1601。字节编码,通常采用EUC储存方法,以便兼容于ASCII。每个汉字及符号以两个字节来表示 。第一个字节称为“高位字节”,第二个字节称为“低位字节”。 “高位字节”使用了0xA1-0xF7(把01-87区的区号加上0xA0),“低位字节”使用了0xA1-0xFE(把01-94加上0xA0)。例如 “啊”字在大多数程序中,会以0xB0A1储存(与区位码对比:0xB0=0xA0+16,0xA1=0xA0+1)。

所以GB2312编码中汉字区码的十进制是从176到247,位码是从161到254.之所以存储了6763小于72(一级汉字和二级汉字所占的区)*94(每个区有94个汉字)=6768,是因为在区码为215,位码为250-254之间共五个编码没有汉字编码,所以6768-5=6763个

GB2312 与 Unicode 的关系

GB2312 字符集是 Unicode 字符集的一个子集。这也就是说,GB2312 所收录的每一个字符都收录在 Unicode  之中。 GB2312 编码和 Unicode 编码确没有什么相同之处,不兼容。同一个汉字,它的 GB2312 编码和 Unicode 编码确毫不相同。例如:汉字“啊”,它的 GB2312 编码为 0xB0A1,但是它的Unicode 编码为 0x554A。

举例:
计算机编码总结(中)

高位:B0=A0+16(区码),低位:A1=A0+1(位码)
所以编码为B0A1,
计算的十进制值:176(B0的十进制值)*256(高八位)+161(A1的十进制值)=45217

转:https://blog.csdn.net/oshan2012/article/details/79070705

上一篇:94-欧拉定理-最小x


下一篇:原创-性能测试篇-2D性能测试脚本