区位码、国标码、机内码、输入码、字形码的总结

在我国汉字代码标准GB2312-80中对数字、字母、文字、符号进行了规范,两个字节代表一个字,使用一张表来记录这些字,横坐标成为位,纵坐标叫做区,一共有94个区,94个位,一个区位代表一个编码。所以叫做区位码。其中:01-09区为符号、数字区,16-87区为汉字区,10-15区、88-94区是有待进一步标准化的空白区

《信息交换用汉字编码字符集》是由中国国家标准总局1980年发布,1981年5月1日开始实施的一套国家标准,标准号是GB 2312-1980。GB2312编码适用于汉字处理、汉字通信等系统之间的信息交换,通行于中国大陆;新加坡等地也采用此编码。

中国大陆几乎所有的中文系统和国际化的软件都支持GB2312。   GB2312标准共收录6763个汉字,其中一级汉字3755个,二级汉字3008个;同时,GB2312收录了包括拉丁字母、希腊字母、日文平假名及片假名字母、俄语西里尔字母在内的682个全角字符。

GB2312的出现,基本满足了汉字的计算机处理需要,它所收录的汉字已经覆盖中国大陆99.75%的使用频率。对于人名、古汉语等方面出现的罕用字,GB2312不能处理,这导致了后来GBK及GB18030汉字字符集的出现。   

GB2312中对所收汉字进行了“分区”处理,每区含有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。

国标码:

对每个字进行二进制的编码就叫国标码,国标码是由区位码变换得来:区和位转成16进制后,分别加上20H,得到的编码就是国标码。为什么要加20H,我猜测可能是因为仿照ASCII,ASCII前32位是控制字符,33开始才是正常的字母。国标码定义了汉字的标准编码,遵循这个标准的计算机都可以正确的互相交换信息。

机内码:

是国标码的程序实现,代表计算机如何将国标码存储到计算机中。因为ascii码是7位表示0~127,为了进行区分,所以存储到计算机内的编码需要做一个变换,就是加上128,这样就能保证汉字的编码和ascii码不重复。

输入码:

也是就外码,从输入设备获取的编码,比如全拼、五笔等。字形码:汉字的显示码,矩阵形式,用来显示的,字库存储的就是这种。

总结一下:

国标码定义了汉字的二进制的信息编码,机内码是存储到计算机内,可以处理和传输的编码,输入码是汉字输入到计算机的编码,字形码是计算机对外界显示的编码。