字符及汉字编码

Author: Date: 1998年 第42期 03版

  一、字符编码
  国际标准化组织ISO规定采用美国标准信息交换码,即ASCII码(American Standard Code For Information Interchange)作为字符编码的标准。ASCII码规定基本字符集(基本ASCII码)中的高位为0,因此ASCII码只有2的7次方共128个,从0—127。其中0—3为控制码(NUL、LF、ESC等),32—126为显示、打印字符(*、=、A、a等)。127为删除符(DEL),扩展ASCII码高位一律为1,其范围为8—255,共128个。
  二、汉字编码
  汉字是世界上最庞大的字符集,数量达6万以上,要在计算机中表示国家标准GB2312—80,把常用汉字分成二个库:一级字库3755个汉字,通常占使用汉字的90%左右;二级字库不太常用,有3008个汉字,共计6763个汉字。这么多汉字要在计算机中表示,就必须采用2个字节来表示一个汉字。为了避免与基本ASCII码相混,2个字节的高位均置1作为汉字的机内码,汉字编码采用双一位方案,大约可表示128×128=16384种状态。但由于每个字节的ASCII码的最高位为1,其余7位仍有可能与控制码(高位置为0,值为0—29)相同。为可行起见,每个汉字字节中均剔除了这30种状态,再去掉一个20H(空格)状态以及00区00位(以便从1区1位开始)及最后2个状态后,取用128—30—1—1—2=94个汉字区。因此汉字编码可以容纳94×94=8836个汉字。这种异形国标码就是汉字的机内码,其实质并非是汉字本身,而仅仅是汉字字模点的存取。这个规定用头一个字节表示区号,第二个字节表示位号。全部国标汉字均排列在94×94的矩阵内,每一行为“区”每一列为“位”,这就是区位码。