现在的位置: 首页 > 综合 > 正文

汉字交换码和机内码

2013年03月12日 ⁄ 综合 ⁄ 共 1188字 ⁄ 字号 评论关闭
在计算机中是用二进制数字来对应字符集中的字符,而目前使用较普遍的是ASCII字符编码,由于是8位二进制数的单一字节编码集,最多只能表示256个字符,而对于中文,常用却有6000以上,这就不能表示数量众多的汉字字符,因此一些使用汉字的国家和地区就在ASCII码的基础上按照一定的规则设计了不同的汉字编码集,以处理众多的汉字字符。为了让汉字编码集能够兼容ANSI码,从而在操作系统中正常使用,他们仍然采用单字节来表示ANSI字符,而用双字节来表示汉字字符。

    汉字交换码是指不同的具有汉字处理功能的计算机系统之间在交换汉字信息时所使用的代码标准。

    1981年5月,《信息交换用汉字编码字符集·基本集》(代号GB2312-80),该字符集共收录了6763个汉字和682个图形符号。6763个汉字按其使用频率和用途,又可分为一级常用汉字3755个,二级次常用汉字3008个。其中一级汉字按拼音字母顺序排列,二级汉字按偏旁部首排列。采用两个字节对每个汉字进行编码,每个字节各取七位,这样可对128×128=16384个字符进行编码。

    区位码: 把汉字排列在一个94行×94行的方阵(二维表格)中,在此正方形矩阵中,每一行称为“区”,每一列称为“位”,这样组成了一个共有94区,每个区有94位的字符集。  区位码是用十进制数表示一个汉字或图形符号在字符集中的位置。二维表中,每一行称为一个区,用汉字编码的第一个字节表示,称为区码。每个汉字在一列中的位置用第二个字节表示,称为位码。。例如,“学”字的区号为49,位号为07,它的区位码即为4907,用2个字节的二进制数表示为:00110001 00000111

    区位码无法用于汉字通信,因为它可能与通信使用的控制码(00H~1FH)(即0~31)发生冲突。ISO2022规定每个汉字的区号和位号必须分别加上32(即二进制数00100000),经过这样的处理而得的代码称为国标交换码,简称交换码,因此,“学”字的国标交换码计算为:
00110001   00000111
+00100000 +00100000
-------------------
01010001   00100111

    用十六进制数表示即为5127H。

    由于文本中通常混合使用汉字和西文字符,汉字信息如果不予以特别标识,就会与单字节的ASCII码混淆。此问题的解决方法之一是将一个汉字看成是两个扩展ASCII码,使表示GB2312汉字的两个字节的最高位都为1。这种高位为1的双字节汉字编码即为GB2312汉字的机内码,简称为内码。

    因此,“学”字的机内码为:11010001 10100111

    用16进制表示即为D1A7H。

    最后要指出的是,汉字的输入编码与汉字的机内码是不同范畴的概念。不管采用什么样的编码输入法(例如拼音、五笔字型等)来输入一个汉字,其机内码都是相同的。

抱歉!评论已关闭.