欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 幼教 > GB2312编码(加2020H、8080H原理)

GB2312编码(加2020H、8080H原理)

2025/1/19 10:16:23 来源:https://blog.csdn.net/weixin_44070137/article/details/142035994  浏览:    关键词:GB2312编码(加2020H、8080H原理)

区位码、内码、国标码 转换及原理

  • 背景
  • 答题
  • 思考
  • 相关资料

背景

问题: 某汉字的国标码为5650H,那么它的机内码为( B )。A E6E0H
B D6D0H
C C6C0H
D 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的编码标准,而这种方法最后产生的编码最后就被一些教科书称为内码
  • 个人理解:
    • 2020H: 相当于ASCII中 前32字符, 32换算16进制 就是20H
    • 8080H: 相当于ASCII中 128个字符,128换算16进制就是 80H
    • 最终:
      • 机内码 = 国标码 + 8080H
      • 机内码 = 区位码 + A0A0H
      • 国标码 = 区位码 + 2020H

相关资料

  • GB2312编码(为什么要加2020H、8080H,外码→内码→交换码→字形码)
  • 在计算机中 ascii码是几位二进制编码,ASCII码采用多少位二进制编码
  • 刨根究底字符编码之六——简体汉字编码中区位码、国标码、机内码、外码、字形码的区别及关系

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com