汉字编码关系
输入码、区位码、国标码与机内码
  我们知道,键盘是当前微机的主要输入设备,输入码就是使用英文键盘输入汉字时的编码。目前,我国已推出的输入码有数百种,但用户使用较多的约为十几种,按输入码编码的主要依据,大体可分为顺序码、音码、形码、音形码四类,如“保”字,用全拼,输入码为码为“BAO”,用区位码,输入码为“1703”,用五笔字型则输入码为“WKS”。
计算机只识别由01组成的代码,ASCII码是英文信息处理的标准编码,汉字信息处理也必须有一个统一的标准编码。我国国家标准局于19815月颁布了《信息交换用汉字编码字符集──基本集》,代号为GB2312-80,共对6763个汉字和682个图形字符进行了编码,其编码原则为:汉字用两个字节表示,每个字节用七位码(高位为0),国家标准将汉字和图形符号排列在一个9494列的二维代码表中,每两个字节分别用两位十进制编码前字节的编码称为区码后字节的编码称为位码,此即区位码,如在二维代码表中处于17区第3位,区位码即为“1703 ”。 (教材附页可到)
  国标码并不等于区位码,它是由区位码稍作转换得到,其转换方法为:先将十进制区码和位码转换为十六进制的区码和位码,这样就得了一个与国标码有一个相对位置差的代码,再将
这个代码的第一个字节和第二个字节分别加上20H,就得到国标码,相当于如果不转换的话,在两个字节上分别加上32即可。如:“保”字的国标码为3123H,它是经过下面的转换得到的:1703D>1103H->+20H>3123H
  国标码是汉字信息交换的标准编码,但因其前后字节的最高位为汉字编码0,与ASCII码发生冲突,如“保”字,国标码为31H23H,而西文字符“1”和“#”的SCII也为31H23H,现假如内存中有两个字节为31H23H,这到底是一个汉字,还是两个西文字符“1”和“#”?于是就出现了二义性,显然,国标码是不可能在计算机内部直接采用的,于是,汉字的机内码采用变形国标码,其变换方法为:将国标码的每个字节都加上128,即将两个字节的最高位由01,其余7位不变,也就是如果国标码是16进制的,直接加上8080H即可。如:由上面我们知道,“保”字的国标码为3123H,前字节为00110001B,后字节为00100011B,高位改110110001B10100011B 即为B1A3H,因此,“保”字的机内码就是B1A3H 显然,汉字机内码的每个字节都大于128,这就解决了与西文字符的ASCII码冲突的问题。
  如上所述,汉字输入码、区位码、国标码与机内码都是汉字的编码形式,它们之间有着千丝万缕的联系,但其间的区别也是不容忽视的。
公式总结:
1.先将区位码的区号和位号分别转换为16进制
如“保”字区位码十进制1703转换成16进制形式1103H
  2.区位码 2020H 国标码
  3.国标码 8080H 机内码

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。