计算机中汉字的表示也是用二进制编码,同样是人为编码的。根据应用目的的不 同,汉字编码分为外码、交换码、机内码和字形码。 1.外码(输入码)� 外码也叫输入码,是用来将汉字输入到计算机中的一组键盘符号。英文字母只有26个,可以把所有的字符都放到键盘上,而使用这种办法把所有的汉字都放到键盘上,是不可能的。所以汉字系统需要有自己的输入码体系,使汉字与键盘能建立对应关系。目前常用的输入码有拼音码、五笔字型码、自然码、表形码、认知码、区位码和电报码等,一种好的编码应有编码规则简单、易学好记、操作方便、重码率低、输入速度快等优点,每个人可根据自己的需要进行选择。在后面的章节中,重点介绍智能全拼输入法和五笔字型输入法。� 2.交换码� 计算机内部处理的信息,都是用二进制代码表示的,汉字也不例外。而二进制代码使用起来是不方便的,于是需要采用信息交换码。我国标准总局1981年制定了中华人民共和国国家标准GB2312--80《信息交换用汉字编码字符集--基本集》,即国标码。国标码字符集中收集了常用汉字和图形符号7445个,其中图形符号682个,汉字6763个,按照汉字的使用频度分为两级,第一级为常用汉字3755个,第二级为次常用汉字3008个。为了避开ASCII字符中的不可打印字符0100001--1111110(十六进制为21-7E),国标码表示汉字的范围为2121--7E7E(十六进制)。� 区位码是国标码的另一种表现形式,把国标GB2312--80中的汉字、图形符号组成一个94×94的方阵,分为94个“区”,每区包含94个“位”,其中“区”的序号由01至94,“位”的序号也是从01至94。94个区中位置总数=94×94=8836个,其中7445个汉字和图形字符中的每一个占一个位置后,还剩下1391个空位,这1391个位置空下来保留备用。所以给定“区”值和“位”值,用四位数字就可以确定一个汉字或图形符号,其中前两位是“区”号。后两位是“位”号,如“普”字的区位码是“3853”,“通”字的区位码是“4508”。区位码编码的最大优点是没有重码,但由于编码缺少规律,很难记忆。使用区位码的主要目的是为了输入一些中文符号或无法用其它输入法输入的汉字、制表符以及日语字母、俄语字母、希腊字母等。94个区可以分为五组:� 01--15区:是各种图形符号、制表符和一些主要国家的语言字母,其中01--09区为标准符号区,共有682个常用符号。� 10--15区:为自定义符号区,可留作用户自己定义。� 16--55区:是一级汉字区,共有3755个常用汉字,以拼音为序排列。� 56--87区:是二级汉字区,共有3008个次常用汉字,以部首为序排列。� 88--94区:自定义汉字区,可留作用户自己定义。� 3.机内码� 根据国标码的规定,每一个汉字都有了确定的二进制代码,但是这个代码在计算机内部处理时会与ASCII码发生冲突,为解决这个问题,把国标码的每一个字节的首位上加1。由于ASCII码只用7位,所以,这个首位上的“1”就可以作为识别汉字代码的标志,计算机在处理到首位是“1”的代码时把它理解为是汉字的信息,在处理到首位是“0”的代码时把它理解为是ASCII码。经过这样处理后的国标码就是机内码。� 汉字的机内码、国际码和区位码之间的关系是:� (汉字机内码前两位)16=(国标码前两位)16+80H=(区码)16+A0H� (汉字机内码后两位)16=(国标码后两位)16+80H=(区码)16+A0H� 把用十六进制表示的机内码的前两位和机内码的后两位连起来,就得到完整的用十六进制表示的机内码。在微机内部汉字代码都用机内码,在磁盘上记录汉字代码也使用机内码。� 4.汉字的字形码� 字形码是汉字的输出码,输出汉字时都采用图形方式,无论汉字的笔画多少,每个汉字都可以写在同样大小的方块中。为了能准确地表达汉字的字形,对于每一个汉字都有相应的字形码,目前大多数汉字系统中都是以点阵的方式来存储和输出汉字的字形。所谓点阵就是将字符(包括汉字图形)看成一个矩形框内一些横竖排列的点的集合,有笔画的位置用黑点表示,没笔画的位置用白点表示。在计算机中用一组二进制数表示点阵,用0表示白点,用1表示黑点。一般的汉字系统中汉字字形点阵有16×16、24×24、48×48几种,点阵越大对每个汉字的修饰作用就越强,打印质量也就越高。通常用16×16点阵来显示汉字,每一行上的16个点需用两个字节表示,一个16×16点阵的汉字字形码需要2×16=32个字节表示,这32个字节中的信息是汉字的数字化信息,即汉字字模。下面以“口”为例看看16×16点阵字形是怎样存放的(如图3--1)。� 如果我们把这个“口”字图形的“.”处用“0”代替,就可以很形象地得到“口”的字形码:0000H 0004H 3FFAH 2004H 2004H 2004H 2004H 2004H 2004H 2004H 2004H 2004H 3FFAH 2004H 0000H 0000H。计算机要输出“口”时,先找到显示字库的首址,根据“口”的机内码经过计算,再去找到“口”的字形码,然后根据字形码(要用二进制)通过字符发生器的控制在屏幕上进行依次扫描,其中二进制代码中是“0”的地方空扫,是“1”的地方扫出亮点,于是就可以得到“口”的字符图形。� 字模按构成字模的字体和点阵可分为宋体字模、楷体字模等等,这些是基本字模。基本字模经过放大、缩小、反向、旋转等交换可以得到美术字体,如长体、扁体、粗体、细体等等。汉字还可以分为简体和繁体两种,ASCII字符也可分为半角字符和全角字符。汉字字模按国标码的顺序排列,以二进制文件形式存放在存储器中,构成汉字字模字库,亦称为汉字字形库,称汉字库。���� 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 . . . . . . . . . . . . . . . . 1 . . . . . . . . . . . . . 1 . . 2 . . 1 1 1 1 1 1 1 1 1 1 1 1 . . 3 . . 1 . . . . . . . . . . 1 . . 4 . . 1 . . . . . . . . . . 1 . . 5 . . 1 . . . . . . . . . . 1 . . 6 . . 1 . . . . . . . . . . 1 . . 7 . . 1 . . . . . . . . . . 1 . . 0 . . 1 . . . . . . . . . . 1 . . 1 . . 1 . . . . . . . . . . 1 . . 2 . . 1 . . . . . . . . . . 1 . . 3 . . 1 . . . . . . . . . . 1 . . 4 . . 1 1 1 1 1 1 1 1 1 1 1 1 . . 5 . . 1 . . . . . . . . . . 1 . . 6 . . . . . . . . . . . . . . . . 7 . . . . . . . . . . . . . . . . 图1-6 “口”字的16×16点阵字形图
参考资料: http://www.sxftc.edu.cn/course/school/pc_basic/jiaoan/1.4.htm
计算机中汉字的表示也是用二进制编码,同样是人为编码的。根据应用目的的不 同,汉字编码分为外码、交换码、机内码和字形码。 1.外码(输入码)? 外码也叫输入码,是用来将汉字输入到计算机中的一组键盘符号。英文字母只有26个,可以把所有的字符都放到键盘上,而使用这种办法把所有的汉字都放到键盘上,是不可能的。所以汉字系统需要有自己的输入码体系,使汉字与键盘能建立对应关系。目前常用的输入码有拼音码、五笔字型码、自然码、表形码、认知码、区位码和电报码等,一种好的编码应有编码规则简单、易学好记、操作方便、重码率低、输入速度快等优点,每个人可根据自己的需要进行选择。在后面的章节中,重点介绍智能全拼输入法和五笔字型输入法。? 2.交换码? 计算机内部处理的信息,都是用二进制代码表示的,汉字也不例外。而二进制代码使用起来是不方便的,于是需要采用信息交换码。我国标准总局1981年制定了中华人民共和国国家标准GB2312--80《信息交换用汉字编码字符集--基本集》,即国标码。国标码字符集中收集了常用汉字和图形符号7445个,其中图形符号682个,汉字6763个,按照汉字的使用频度分为两级,第一级为常用汉字3755个,第二级为次常用汉字3008个。为了避开ASCII字符中的不可打印字符0100001--1111110(十六进制为21-7E),国标码表示汉字的范围为2121--7E7E(十六进制)。? 区位码是国标码的另一种表现形式,把国标GB2312--80中的汉字、图形符号组成一个94×94的方阵,分为94个“区”,每区包含94个“位”,其中“区”的序号由01至94,“位”的序号也是从01至94。94个区中位置总数=94×94=8836个,其中7445个汉字和图形字符中的每一个占一个位置后,还剩下1391个空位,这1391个位置空下来保留备用。所以给定“区”值和“位”值,用四位数字就可以确定一个汉字或图形符号,其中前两位是“区”号。后两位是“位”号,如“普”字的区位码是“3853”,“通”字的区位码是“4508”。区位码编码的最大优点是没有重码,但由于编码缺少规律,很难记忆。使用区位码的主要目的是为了输入一些中文符号或无法用其它输入法输入的汉字、制表符以及日语字母、俄语字母、希腊字母等。94个区可以分为五组:? 01--15区:是各种图形符号、制表符和一些主要国家的语言字母,其中01--09区为标准符号区,共有682个常用符号。? 10--15区:为自定义符号区,可留作用户自己定义。? 16--55区:是一级汉字区,共有3755个常用汉字,以拼音为序排列。? 56--87区:是二级汉字区,共有3008个次常用汉字,以部首为序排列。? 88--94区:自定义汉字区,可留作用户自己定义。? 3.机内码? 根据国标码的规定,每一个汉字都有了确定的二进制代码,但是这个代码在计算机内部处理时会与ASCII码发生冲突,为解决这个问题,把国标码的每一个字节的首位上加1。由于ASCII码只用7位,所以,这个首位上的“1”就可以作为识别汉字代码的标志,计算机在处理到首位是“1”的代码时把它理解为是汉字的信息,在处理到首位是“0”的代码时把它理解为是ASCII码。经过这样处理后的国标码就是机内码。? 汉字的机内码、国际码和区位码之间的关系是:? (汉字机内码前两位)16=(国标码前两位)16+80H=(区码)16+A0H? (汉字机内码后两位)16=(国标码后两位)16+80H=(区码)16+A0H? 把用十六进制表示的机内码的前两位和机内码的后两位连起来,就得到完整的用十六进制表示的机内码。在微机内部汉字代码都用机内码,在磁盘上记录汉字代码也使用机内码。? 4.汉字的字形码? 字形码是汉字的输出码,输出汉字时都采用图形方式,无论汉字的笔画多少,每个汉字都可以写在同样大小的方块中。为了能准确地表达汉字的字形,对于每一个汉字都有相应的字形码,目前大多数汉字系统中都是以点阵的方式来存储和输出汉字的字形。所谓点阵就是将字符(包括汉字图形)看成一个矩形框内一些横竖排列的点的集合,有笔画的位置用黑点表示,没笔画的位置用白点表示。在计算机中用一组二进制数表示点阵,用0表示白点,用1表示黑点。一般的汉字系统中汉字字形点阵有16×16、24×24、48×48几种,点阵越大对每个汉字的修饰作用就越强,打印质量也就越高。通常用16×16点阵来显示汉字,每一行上的16个点需用两个字节表示,一个16×16点阵的汉字字形码需要2×16=32个字节表示,这32个字节中的信息是汉字的数字化信息,即汉字字模。下面以“口”为例看看16×16点阵字形是怎样存放的(如图3--1)。? 如果我们把这个“口”字图形的“.”处用“0”代替,就可以很形象地得到“口”的字形码:0000H 0004H 3FFAH 2004H 2004H 2004H 2004H 2004H 2004H 2004H 2004H 2004H 3FFAH 2004H 0000H 0000H。计算机要输出“口”时,先找到显示字库的首址,根据“口”的机内码经过计算,再去找到“口”的字形码,然后根据字形码(要用二进制)通过字符发生器的控制在屏幕上进行依次扫描,其中二进制代码中是“0”的地方空扫,是“1”的地方扫出亮点,于是就可以得到“口”的字符图形。? 字模按构成字模的字体和点阵可分为宋体字模、楷体字模等等,这些是基本字模。基本字模经过放大、缩小、反向、旋转等交换可以得到美术字体,如长体、扁体、粗体、细体等等。汉字还可以分为简体和繁体两种,ASCII字符也可分为半角字符和全角字符。汉字字模按国标码的顺序排列,以二进制文件形式存放在存储器中,构成汉字字模字库,亦称为汉字字形库,称汉字库。???? 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 . . . . . . . . . . . . . . . . 1 . . . . . . . . . . . . . 1 . . 2 . . 1 1 1 1 1 1 1 1 1 1 1 1 . . 3 . . 1 . . . . . . . . . . 1 . . 4 . . 1 . . . . . . . . . . 1 . . 5 . . 1 . . . . . . . . . . 1 . . 6 . . 1 . . . . . . . . . . 1 . . 7 . . 1 . . . . . . . . . . 1 . . 0 . . 1 . . . . . . . . . . 1 . . 1 . . 1 . . . . . . . . . . 1 . . 2 . . 1 . . . . . . . . . . 1 . . 3 . . 1 . . . . . . . . . . 1 . . 4 . . 1 1 1 1 1 1 1 1 1 1 1 1 . . 5 . . 1 . . . . . . . . . . 1 . . 6 . . . . . . . . . . . . . . . . 7 . . . . . . . . . . . . . . . . 图1-6 “口”字的16×16点阵字形图