GB2312区位码转机内码为什么要同时加上2020H和8080H?

查到的资料说加上这两个数是为了避免和ASCII冲突,如果只是为了这个原因的话只要加上8080H就可以了,为何还要加上2020H呢?
关注者
8
被浏览
11,177
登录后你可以
不限量看优质回答私信答主深度交流精彩内容一键收藏
汉字编码-区位码、国标码和内码发展和区别以及为什么要加2020H、8080H

贴一下主要内容

为什么要加上2020H和8080H?
         区位码、内码、国标码怎么转换非常简单,但是令人迷惑的是为什么要那么转换?这种转换
不可能平白无故地那样转换!我搜索很多资料,找到最好的解释,总结如下:
         首先,注意到一点,GB2312虽说是对中文编码,但是里面有对26个英文字母和一些特殊符号
的编码,按理说这和ASCII重合的部分应该无需设置,沿用ASCII中不就行了?但是当时在制定GB2312
之前,就决定覆盖掉ASCII中符号和英文字母部分,所以将其中的英文字母和符号重新编入GB2312中。
而对于ASCII中前32个控制字符则继续沿用。所以保留前32字符,就需要将汉字编码向后偏移32,十六
进制20H,这也就是区位码要加上20H得到国标码,这就是GB2312的编码规范。
         而这样产生一个弊端,某些早期用ASCII码编码的英文文章无法打开,一打开就是乱码,也
就是说应该要兼容早期ASCII码而不是覆盖它!为了解决这个问题,将字节的最高位设为1,因为ASCII
中使用7位,最高位为0。这样就区分开了ASCII和GB2312。这也是为什么要加上8080H。
         其实我们说国标码才是GB2312的规范编码,后来的内码是微软为了解决冲突问题而采用的方
式,本质上是修改了GB2312的编码标准,而这种方法最后产生的编码最后就被一些教科书称为内码。