汉字编码表示与显示
一、汉字的编码
1981年5月,我国国家标准总局颁布了《信息交换用汉字编码字符集》(GB2312-80),简称国家标准汉字编码,也叫国标码。国标码共收进标准字符7445个。其中一级汉字3755个,二级汉字3008个,共计6763个汉字。 由于汉字的字符多,一个字节即8位二进制代码不足以表示所有的常用汉字。同时为了不与西文的ASCII码混淆,汉字国标码的每个汉字或符号都使用2个字节(16位二进制)代码来表示。 西文字符采用一个字节表示,即ASCII码,一般只用七位来表示128个字符,而把最高位用作奇偶校验(或者不用)。
国标码介绍:在GB2312-80代码表中,纵向分为0~93,共94行;横向也是0~93,共94列。行与列分别用b7b6b5b4b3b2b1七 位二进制码表示,第一字节表示行,第二字节表示列。其值从0100001到1111110(十六进制为21-7E)。这正是ASCII码的可打印字符的编 码范围。国标码是将第一字节和第二字节连写而得。由于二进太长,一般用十六进制表示。
区位码介绍:在国标GB2312-80中,国标码除了用双七位二进制表示外,还可以表示成区位码的形式。即在国标代码表中,将行号称为区号,列号称为位号,分别有94个区和94个位。区号和位号用十进制表示,不足两位前面补0。这样每个汉字或符号都可用4位十进制表示。区位码因此可以用来作输入码。是汉字输入的基本编码方法之一。
机内码介绍:在计算机中双字节汉字与单字节西文字符混合使用、处理,汉字编码的各个字节若不予以特别标识,就会与单字节的ASCII码混淆不清;为此,将标识汉字的两个字节编码的最高位置为1,这种最高位为1的双字节汉字编码就是中国大陆普遍采用的汉字机内码,简称内码,是计算机内部存储、处理汉字所使用的代码。
内码、国标码、区位码三者的关系是:
高字节内码=高字节国标码+80H=区码+20H+80H=区码+0A0H=区码+160
低字节内码=低字节国标码+80H=位码+20H+80H=位码+0A0H=位码+160
繁体汉字在一些地区和领域仍在使用,国家又制定出相应的繁体汉字字符集,国家标准代号是GB12345-90“信息交换用汉字编码字符集——辅助集”,包含了717个图形符号和6866个繁体汉字。BIG5是我国台湾地区计算机系统中使用的汉字编码字符集,包含了420个图形符号和13070个繁体汉字(不用简体字)。
二、汉字的字模库
汉字的输出主要是指汉字字形的输出。输出的方式主要是显示和打印两种。汉字输出时,用一个点阵来表示一个汉字。点阵的每个点位只有两种状态:有点或无点。若用二进制代码来表示即为该位取值为1 表示有点,取值为0表示无点。汉字的输出原理与西文的输出原理是相同的。不同的是汉字笔划较多,要能很好地表示一个汉字,起码需要16×16点阵才行。如果要求字型逼真美观,点阵的点数还要增加。如用24×24、32×32、48×48等,因此汉字的存储空间比西文要大很多,需要用大量的存储空间来存放字模。