《信息交换用汉字编码字符集·基本集》是我国于1980年颁布的国家标准,即《中华人民共和国国家标准信息交换汉字编码》,简称国标码。国标码的主要用途是作为汉字信息交换码使用。
在此标准中,每个汉字(图形符号)采用双字节表示,第一个字节的范围从0XA1-0XF7,共87种,第二个字节的范围从0XA1-0XFE,共94种,利用这两个字节共可定义出87*94=8178种汉字,实际共用6763个汉字。
GB2312-80标准的汉字编码表有94行,94列,其行号称为区号,列位号,因此,我们也称GB2312-80标准的汉字编码为区位码,双字节中高字节表示区号,低字节表示位号。在国标码表中,共收录了一、二级汉字和图形符号7445个。其中图形符号682个,分布在1~15区;一级汉字(常用汉字)3755个,按汉语拼音字母顺序排列,分布在16~55区;二级汉字(不常用汉字)3008个,按偏旁部首排列,分布在56~87区;88区以后为空白区,以待扩展。区位码可以唯一确定一个汉字或字符,反之任何一个汉字或字符都对应唯一的区位码。例如,汉字"啊"的区位码是"1601",即在16区的第01位。
由于国标GB2312-80编码的特殊性,可通过计算偏移量的方法来定位该汉字在汉字编码表中任意的位置。汉字在编码表中的偏移量计算公式为:offset=(c1-0xB0)*94+(c2-0xA1)
其中:offset代表某汉字在编码表中的位置;c1和c2代表汉字的内部码;c1为汉字的高位编码;c2为汉字的低位编码。
举例说明这个偏移量计算公式的应用:以汉字“啊”为例,取出“啊”的汉字编码,分别取出相应的高位和低位的值,并代入公式中有:
offset(啊)=(176-176)*94+(160-160)=0
显然“啊”就是存储在下标地址为0的空间中。通过计算得到汉字的偏移地址后,可以很方便地到相应地址空间去查看该汉字的相关信息,为后面的中文分词做好准备。