即GB国标码:中文内码之一,代表中文简化字,在中国大陆广泛使用,影响所及,使用量渐见普及。 “国家标准信息交换用汉字编码”(GB2312-80标准),简称国标码。国标码是指1980年中国制定的用于不同的具有汉字处理功能的计算机系统间交换汉字信息时使用的编码。国际码是二字节码, 用两个七位二进制数编码表示一个汉字。目前国标码收入6763个汉字, 其中一级汉字(最常用)3755个, 二级汉字3008个, 另外还包括682个西文字符、图符。 例如“巧”字的代码是39H 41H, 在机内形式如下: 0 1 1 1 0 0 1 1 第一字节 0 0 0 0 0 1 第二字节 在计算机内部,汉字编码和西文编码是共存的,如何区分它们是个很重要的问题,因为对不同的信息有不同的处理方式。 方法之一是对于二字节的国标码,将二个字节的最高位都置成“1”, 而ASCII码所用字节最高位保持“0”,然后由软件(或硬件)根据字节最高位来作出判断。 字符代码化是指用户从键盘上输入代表某个汉字的编码。我们把采用不同的编码系统以代表汉字进行输入的方案(如数字码、拼音码和字形码),称为汉字的输入法,区位码、五笔字型码、拼音码、智能ABC、微软拼音输入法等都是其中的具体代表。 汉字通过编码输入计算机后,在其后的处理过程中,不同阶段使用不同的代码,首先通过键盘管理程序将接收到的输入编码转换为0和1构成的机内码,实现计算机的存储、加工和传输处理。 同样,存储在计算机内部的机内码也必须经转换后才能恢复汉字的“本来面目”。这种转换通常是由计算机的输入/输出设备来实现的, 有时还需要软件来参与这种转换过程。这个阶段的汉字代码称为字形码,用以显示和打印输出。
区位码:
1980年,为了使每一个汉字有一个全国统一的代码,我国颁布了第一个汉字编码 的国家标准: GB2312-80《信息交换用汉字编码字符集》基本集,这个字符集是我国中文信息处理技术的发展基础,也是目前国内所有汉字系统的统一标准。
国标码是一个四位十六进制数,区位码是一个四位的十进制数,每个国标码或区位码都对应着一个唯一的汉字或符号,但因为十六进制数我们很少用到,所以大家常用的是区位码,它的前两位叫做区码,后两位叫做位码。
汉字库分布情况如下:
一级汉字 16-55区
二级汉字 56-87区
三级汉字 1-9区
空闲未用 10-15区
通常,在DOS下的各汉字系统中,同时按Alt键和F1键即可调用区位码输入方法。而在Windows中常用Ctrl+空格键和Ctrl+Shift键调出区位码。如“2901”代表“健”字,“4582”代表“万”字,“8150”代表“楮”字,这些都是汉字,用区位码还可以很轻松地输入特殊符号,比如,“0189”代表“※”(符号),“0528”代表“ゼ”(日本语),“0711”代表“Й”(俄文),“0949”代表“┭”(制表符)。
在区位码中,01-09区为特殊字符,10-55区为一级汉字(3755个最常用的汉字,按拼音字母的次序排列),56-87区为二级汉字(3008个汉字,按部首次序排列), 在区位码汉字输入方法中,汉字编码无重码,在熟练掌握汉字的区位码后,录入汉字的速度是很快的,但若想记忆住全部区位码是相当困难的,常使用于录入特殊符号,如制表符、希腊字母等,这里简单介绍几个区。
部分国际区位编码
区号:01 【各类符号】
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
0100 、 。 · ˉ ˇ ¨ 〃 々 – ~ ‖ … ' ' " " 〔 〕
0120 〈 〉 《 》 「 」『 』 〖 〗 【 】 ± × ÷ ∶ ∧ ∨ ∑ ∏
0140 ∪ ∩ ∈ ∷ √ ⊥ ∥ ∠ ⌒ ⊙ ∫ ∮ ≡ ≌ ≈ ∽ ∝ ≠ ≮ ≯
0160 ≤ ≥ ∞ ∵ ∴ ♂ ♀ ° ′ ″ ℃ $ ¤ ¢ £ ‰ § № ☆ ★
0180 ○ ● ◎ ◇ ◆ □ ■ △ ▲ ※ → ← ↑ ↓ 〓
区号:02 【各类数字】
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
0200 ⅰ ⅱ ⅲ ⅳ ⅴ ⅵ ⅶ ⅷ ⅸ ⅹ ⒈ ⒉ ⒊
0220 ⒋ ⒌ ⒍ ⒎ ⒏ ⒐ ⒑ ⒒ ⒓ ⒔ ⒕ ⒖ ⒗ ⒘ ⒙ ⒚ ⒛ ⑴ ⑵ ⑶
0240 ⑷ ⑸ ⑹ ⑺ ⑻ ⑼ ⑽ ⑾ ⑿ ⒀ ⒁ ⒂ ⒃ ⒄ ⒅ ⒆ ⒇ ① ② ③
0260 ④ ⑤ ⑥ ⑦ ⑧ ⑨ ⑩ 一 二 三 四 五 六 七 八 九 十
0280 Ⅰ Ⅱ Ⅲ Ⅳ Ⅴ Ⅵ Ⅶ Ⅷ Ⅸ Ⅹ Ⅺ Ⅻ
区号:03 【符号、字母】
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
0300 ! " # ¥ % & '( ) * + , - . / 0 1 2 3
0320 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G
0340 H I J K L M N O P Q R S T U V W X Y Z [
0360 \ ] ^ _ ` a b c d e f g h i j k l m n o
0380 p q r s t u v w x y z { | }  ̄
区号:06 【罗马字母】
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
0600 Α Β Γ Δ Ε Ζ Η Θ Ι Κ Λ Μ Ν Ξ Ο Π Ρ Σ Τ
0620Υ Φ Χ Ψ Ω α β γ δ ε ζ η
0640θ ι κ λ μ ν ξ ο π ρ σ τ υ φ χ ψ ω
0660 0680
区号:08 【汉语拼音】
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
0800 ā á ǎ à ē é ě è ī í ǐ ì ō ó ǒ ò ū ú ǔ
0820 ù ǖ ǘ ǚ ǜ ü ê ㄅ ㄆ ㄇ
0840 ㄈ ㄉ ㄊ ㄋ ㄌ ㄍ ㄎ ㄏ ㄐ ㄑ ㄒ ㄓ ㄔ ㄕ ㄖ ㄗ ㄘ ㄙ ㄚ ㄛ
0860 ㄜ ㄝ ㄞ ㄟ ㄠ ㄡ ㄢ ㄣ ㄤ ㄥ ㄦ ㄧ ㄨ ㄩ
0880
区号:09 【制表字符】
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
0900 ─ ━ │ ┃ ┄ ┅ ┆ ┈ ┉ ┉ ┊ ┋ ┌ ┍ ┎ ┏
0920 ┐ ┑ ┒ ┓ └ ┕ ┖ ┗ ┘ ┙ ┚ ┛ ├ ┝ ┞ ┟ ┠ ┡ ┢ ┣
0940 ┤ ┥ ┦ ┧ ┨ ┩ ┪ ┫ ┬ ┭ ┮ ┯ ┰ ┱ ┲ ┳ ┴ ┵ ┶ ┷
0960 ┸ ┹ ┺ ┻ ┼ ┽ ┾ ┿ ╀ ╁ ┃ ╃ ╄ ╅ ╆ ╇ ╈ ╉ ╊ ╋
0980
以国家标准局1980年颁布的《信息交换用汉字编码字符集》基本集(代号为GB2312-80)规定的汉字交换码作为国家标准汉字编码。 GB2312-80中共有7445个字符符号:汉字符号6763个,一级汉字3755个(按汉语拼音字母顺序排列),二级汉字3008个(按部首笔划顺序排列),非汉字符号682个。GB2312-80规定,所有的国标码汉字及符号组成一个94×94的方阵。在此方阵中,每一行称为一个“区”,每一列称为一个“位”。这个方阵实际上组成一个有94个区(编号由01到94),每个区有94个位(编号由01到94)的汉字字符集。 一个汉字所在的区号和位号的组合就构成了该汉字的“区位码”。其中,高两位为区号,低两位为位号。这样区位码可以惟一地确定某一汉字或字符;反之,任何一个汉字或符号都对应一个惟一的区位码,没有重码。
1区 | 键盘上没有的各种符号 |
2区 | 各种序号 |
3区 | 键盘上的各种符号(按中文方式给出) |
4-5区 | 日文字母 |
6区 | 希腊字母 |
7区 | 俄文字母 |
8区 | 标识拼音声调的母音及拼音字母名称 |
9区 | 制表符号 |
10-15区 | 未用 |
16-55区 | 一级汉字(按拼音字母顺序排列) |
56-87区 | 二级汉字(按部首笔划顺序排列) |
88-94区 | 自定义汉字 |
区位码分布情况如下:
由上可以看出,所有汉字与符号的94个区,可以分为四个组:
①1-15区:为图形符号区。其中1-9区为标准符号区;10-15区为自定义符号区。
②16-55区:为一级汉字区,包含3755个汉字。这些区中的汉字按汉语拼音顺序排序,同音字按笔画顺序列出。
③56-87区:为二级汉字区,包含3008个汉字。这些区中的汉字是按部首笔划顺序排序的。
④88-94区:为自定义汉字区。
国标码规定,每个汉字(包括非汉字的一些符号)由2字节代码表示。每个字节的最高位为0,只使用低7位,而低7位的编码中又有34个是用于控制的,这样每个字节只有27 – 34 = 94个编码用于汉字。2个字节就有94×94=8836个汉字编码。在表示一个汉字的2个字节中,高字节对应编码表中的行号,称为区号;低字节对应编码表中的列号,称为位号。
汉字国标码的范围用二进制表示是: 00100001 00100001 01111110 01111110 (1+32)10 (1+32)10 (94+32)10 (94+32)10 7位ASCII码是128个字符组成的字符集。其中编码值0 31(00000000 00011111)不对应任何印刷字符,通常称为控制符,用于计算机通信中的通信控制或对计算机设备的功能控制。编码值32(00100000)是空格字符SP。编码值127(1111111)是删除字符DEL。
汉字国标码的起始二进制位置选择00100001即(33)10是为了跳过ASCII码的32个控制字符和空格字符。所以,汉字国标码的高位和低位分别比对应的区位码大(32)10或(00100000)2或(20)H,即: 国标码高位 = 区码 + 20H (H表示十六进制),国标码低位 = 位码 + 20H。
汉字是一种象形文字,无法直接用标准西文键盘输入,必须经过转换间接输入;汉字的字数也较多,不能用单字节的ASCⅡ(256个字符)来表示。因此,按照不同的目的和需要,产生了多种汉字编码系统与汉字输入方法。
目前采用两个字节(可以表示64K字符)的汉字编码方案。由于汉字的应用范围较广(东南亚国家),汉字的编码字符集不相同,中国大陆常用GB / GBK码,台湾BIG5。
汉字处理过程
汉字系统对每个汉字预先规定输入计算机中的代码,即汉字的外部码(例如拼音输入码)。计算机为了识别汉字,要把汉字的外部码转换成内部码(二进制代码)进行存储和处理。输出时,还将汉字的内部码转换成汉字的字形码。计算机处理汉字的总过程如下:
键盘管理程序 汉字处理程序 外部(输入)码 → 机内码 → 字形(输出)码
(键盘) (计算机存储、传输) (计算机输出汉字)
↑ ↓↑ ↓
汉字信息 交换码(国标码) 汉字信息
↓ ↑
其它系统代码
交换码 用于计算机与其他系统或设备之间进行汉字代码信息交换的标准汉字代码,目前最常使用的是国标码1981年的GB2312-80, 7445; 2000的GB18030-2000,27000
特 点
每个汉字(图形符号)用两个字节表示,每个字节只用低7位,即最高位为0的二进制码。
在128种编码表示中,有94种用来表示汉字的编码。此标准的汉字编码表有94行、94列,分别为区号和位号。汉字编码使用的高字节称为区码,低字节称为位码。
汉字分为两级:一级为使用频度高的常用汉字;
二级为次常用的汉字;
内部码 也称汉字内码或汉字机内码,是计算机对汉字进行存储、运算、传码的实际代码。
特 点
是由 0和1组成的二进制代码。一个汉字对应一个机内码,即汉字数目=机内码数目;
一般用两个字节表示一个汉字的内码且每个字节最高位为 1。 还有少数三字节、四字节等内部码最多能表示128×128 = 16384 个汉字和图形符号;
机内码目前虽未完全统一,但已趋于标准化。
内部码与国标码的对应关系:内码=国标码+8080
即国标码每个字节最高位为1 → 内部码。
例如:国标码 3B7A → 00111011 01111010 那么,机内码 BBFA→ 10111011 11111010
外部码 也叫汉字输入编码,主要是从键盘(语音、手写、光电)输入计算机中的代表汉字的编码。
键盘输入方式
目前汉字输入方案有数百种,基本上是直接利用西文标准键盘进行汉字输入,每一种汉字输入法都各自提供相应的键盘码与汉字机内码(码表),编码方案大致可分以下四 类:
数 码 用一串数字来替代汉字的编码,特点是无重码、码长适中、速度快、但难记忆。主要有区位码、 电报码。
区位码
属于数码的一种输入法。区位码虽不常用,但它包含其它输入法中未包含的其他信息,如一些特殊符号、序号、日文、希腊文、俄文等,因此,在一些特定场合下,也大有用途。另外,由区位码可以推算出某个信息的国标码和机内码。
特 点 由四位十进制数表示。前两位–区码;后两位-位码。 区位码共有94个区,每个区有94个位。因此,可存储94×94 个信息。其中,1-9区存放为非汉字信息; 16-87区存放汉字信息;10-15, 88-94为空白区, 用户可在此扩充汉字和特殊符号。
用 法 例如: 输入4602 → 微 ; 输入 2790 → 机。
二
一、 汉字字符集的概念
1、国标GB2312-80《信息交换用汉字编码字符集》:该字符集收录了6763个常用汉字,其中一级汉字3755个,二级汉字3008个。另外还收录了各种符号682个,合计7445个。
2、国标GB13000.1-1993(等同于国际标准 ISO/IEC 10646.1-1993)《 通用多八位编码字符集(UCS) 第一部分:体系结构与基本多文种平面》:又称大字符集字库GBK,是《GB2312-80》、《GB12345-90》、《BIG5》等字符集标准的超集,一共收录了中、日、韩20902个汉字。
3、国标GB18030-2000《信息交换用汉字编码字符集基本集的扩充》是未来我国计算机系统必须遵循的基础性标准之一,收录了27564个汉字。
二、 汉字信息的编码知识
1、区位码:GB2312-80字符集,组成一个94*94的矩阵。每一行称为一个“区”,每一列称为一个“位”。一个汉字的区号和位号合在一起构成“区位码”, 区位码的编码范围是:0101~9494。
2、国标码:国标码=(区位码的十六进制表示)+2020H,国标码的取值范围:2121H~7E7EH。
3、机内码:中文或西文信息在计算机系统中的代码表示称为机内码。ASCII码是一种西文机内码,用一个字节表示。汉字机内码用连续两个字节表示,每个字节的最高位是1。
机内码 = 国标码+8080H =(区位码的十六进制表示)+A0A0H。
GB2312-80的机内码编码范围为:A1A1H~FEFEH。
4、输入码: 汉字输入码是指直接从键盘输入的各种汉字输入方法的编码,属于外码。主要分顺序码(无重码)、音码、形码和音形码或形音码四类。
5、字形码:
(1)向量(矢量)法:将汉字分解成笔画,每种笔画使用一段段的直线(向量)近似地表示,这样每个字形都可以变成一连串的向量。
(2)点阵法(字模点阵码):每一个汉字以点阵形式存储在记录介质上,有点的地方为“1”,空白的地方为“0”。
16*16点阵:16*16/8=32字节
24*24点阵:24*24/8=72字节
一个汉字字模占用的字节数根据汉字库的汉字大小不同而不同。以HZK16、HZK12点阵字库为例,字模中每一点使用一个二进制位(Bit)表示,如果是1,则说明此处有点,若是0,则说明没有。这样,一个16×16点阵的汉字总共需要16*16/8=32个字节表示,一个12×12点阵的汉字总共需要16*12/8=24个字节表示
字模的表示顺序为:先从左到右,再从上到下,也就是先画左上方的8个点,再是右上方的8个点,然后是第二行左边8个点,右边8个点,依此类推,画满16×16个点。因此,HZK16中汉字在汉字库中具体位置的计算公式为:(94*(qh-1)+(wh-1))*32; HZK12中汉字在汉字库中具体位置的计算公式为:(94*(qh-1)+(wh-1))*24
汉字“房”的机内码为十六进制的“B7BF”,其中“B7”表示区码,“BF”表示位码。所以“房”的区位码为0xB7BF-0xA0A0=0x171F。将区码和位码分别转换为十进制得汉字“房”的区位码为“2331”,即“房”的点阵位于第23区的第31个字的位置,相当于在文件HZK16中的位置为第32×[(23-1)×94+(31-1)]=67136B以后的32个字节为“房”的显示点阵;相当于在文件HZK12中的位置为第24×[(23-1)×94+(31-1)]=50362B以后的24个字节为“房”的显示点阵
输入码、区位码、国标码与机内码
输入码、区位码、国标码与机内码,这些字对每一位computer fan 来说,可能都不陌生,但其中的联系与区别,可能就不那么清楚了,(笔者作为一名中专电脑教师,经常遇到同学问类似的问题),下面就这问题讲述一下,以飨读者。
我们知道,键盘是当前微机的主要输入设备,;输入码就是使用英文键盘输入汉字时的编码。目前,我国已推出的输入码有数百种,但用户使用较多的约为十几种,按输入码编码的主要依据,大体可分为顺序码、音码、形码、音形码四类,如“保” 字,用全拼,输入码为码为“BAO”,用区位码,输入码为“1703”,用五笔字型则为“WKS”。
计算机只识别由0、1组成的代码,ASCII码是英文信息处理的标准编码,汉字信息处理也必须有一个统一的标准编码。我国国家标准局于1981年5月颁布了《信息交换用汉字编码字符集——基本集》,代号为GB2312-80,共对6763个汉字和682个图形字符进行了编码,其编码原则为:汉字用两个字节表示,每个字节用七位码(高位为0),;国家标准将汉字和图形符号排列在一个94行94列的二维代码表中,;每两个字节分别用两位十进制编码,前字节的编码称为区码,后字节的编码称为位码,此即区位码,;如“保”字在二维代码表中处于17区第3位,区位码即为“1703 ”。
国标码并不等于区位码,它是由区位码稍作转换得到,其转换方法为:先将十进制区码和位码转换为十六进制的区码和位码,;这样就得了一个与国标码有一个相对位置差的代码,;再将这个代码的第一个字节和第二个字节分别加上20H,就得到国标码。如:“保” 字的国标码为3123H,它是经过下面的转换得到的:1703D->1103H->+20H->3123H。
国标码是汉字信息交换的标准编码,但因其前后字节的最高位为0,与ASCII码发生冲突,如“保” 字,国标码为31H和23H,而西文字符“1”和“#”的SCII也为31H和23H,现假如内存中有两个字节为31H和23H,;这到底是一个汉字 ,还是两个西文字符“1”;和“#”?于是就出现了二义性,显然,国标码是不可能在计算机内部直接采用的,于是,;汉字的机内码采用变形国标码,其变换方法为:将国标码的每个字节都加上128,即将两个字节的最高位由0改1,其余7位不变,如:由上面我们知道,“保”字的国标码为3123H,前字节为00110001B,后字节为00100011B,高位改1为10110001B和10100011B 即为B1A3H,因此, 字的机内码就是B1A3H;。
显然,汉字机内码的每个字节都大于128,这就解决了与西文字符的ASCII码冲突的问题。
如上所述,汉字输入码、区位码、;国标码与机内码都是汉字的编码形式,它们之间有着千丝万缕的联系,但其间的区别也是不容忽视的。