历史悠久的泱泱中华,文化博大精深,文字独一无二,且能没有一套属于自己的计算机编码。1980年,为了使每个汉字有一个全国统一的编码,我国颁布了汉字编码的国家标准:GB2312-80《信息交换用汉字编码字符集》基本集,这个字符集是我国中文信息处理技术的发展基础,也是国内所有汉字系统的统一标准。将一些常用符号及汉字,按区与位的方式编入码表,这套编码便是区位码。

一、区位码

区位码是一个四位的十进制数,高两位为区码(01-94),低两位为位码(01-94),由此组成一个94×94的矩阵,每个码值都对应着一个唯一的符号或汉字。如下图示:

图1. 第01区 特殊符号

图2. 汉字区位码对照表

说明:‘啊’的区位码为1601,区码为16,位码为01。

图3. 多音字‘腌’

说明:这种编码经过加工整理一律以汉语拼音的字母为序, 音节相同的字以使用频率为序,其查找方法与一般汉语字典的汉字拼音音节索引查找法相同。由于它是一种无重码的汉字编码,所以多音字只有一个编码。例如:重庆的“重”和重量的“重”,字同音不同,汉字“重”的编码是按Zhong 音编码。

由图2,图3所示,按拼音音节索引时,编码并不连续,这是因为汉字被分级处理,一级汉字相对更为常用。如下图示:

图4. 区段说明

说明:在某些硬件指标相对偏低的平台上可能依然还在使用着一级码汉字。

二、国标码

汉字区位码定义好后融入计算机,发现少了一些控制符,如回车,换行,退格等,同时ASCII编码中前32个控制码刚好包含了这些,那就借来用用吧!为此,国标码诞生了。为了兼容这些控制码,国标码规定在区码、位码的基础上分别加20H(即32的16进制数)。例如:汉字‘啊’的区位码为1601,则区码为16,位码为01,转换成16进制后,区码为10H,位码为01H,转国标码,则区码10H+20H=30H,位码01H+20H=21H,合成后国标码为3021H;

图5. 国标码

说明:图5为Mac系统中的16点阵中文国标码点阵字库,‘啊’的国标码为3021H。

三、机内码

这里特指汉字机内码,简称“内码”,亦称“变形国标码”,指计算机内部存储,处理加工和传输汉字时所用的由0和1符号组成的代码。

国标码虽说很好地解决了控制字符问题,但随着社会的发展,汉字处理系统想要兼容英文(当时主流就是ASCII),当系统中同时存在ASCII和汉字国标码时,将会产生二义性。例如:有两个字节的内容为30H和21H,它既可表示汉字“啊”的国标码,又可表示ASCII中的“0”和“!”,为此,汉字机内码诞生了。由于ASCII编码范围为00H~7FH,字节最高位皆为‘0’,机内码应对国标码加以适当变换处理,将相应国标码每个字节的最高位置为“1”,即:汉字机内码=汉字国标码+8080H。例如:“啊”字的国标码是3021H,则其汉字机内码为B0A1H=3021H+8080H。

图6. 机内码

说明:图6为按照Windows CP936(内码)编码生成的16Pixel中文点阵字库,只包含了一级码汉字(3755个字符),‘啊’的编码为:B0A1H。

上述所述,不论是区位码,国标码,还是机内码,主要都是针对GB2312-80标准(7K+字符),若按区位码94x94矩阵计算,最大也只能表达94x94=8836个字符,这时有人可能会问,若要支持更多的中文怎么办呢?

这自然难不倒勤劳又机智的“中国人”。看懂下面这张图,就都明白了。

说明:这里主要记录汉字编码,并且第一字节最高位皆为‘1’,也能很好的做到向前兼容。

  1. GB2312-80,字符数 6763 = 

  2. GBK,字符数 21003 = ①+②+③

  3. GB18030-2000,字符数 27533 = ①+②+③+④

  4. GB18030-2005,字符数 70244 = ①+②+③+④+⑤

想要了解更多,推荐看看这篇文章:“国家标准代码 - 百度百科”。

四、Unicode

Unicode 是为了解决传统字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求,中文只是其中的一部分。由于Unicode编码(针对中文)不连续,只能靠查表方式解决编码转换问题。

图7. Unicode

说明:‘啊’的Unicode码值为 554AH。

五、总结

  • 图解

  • 编码转换

区位码、国标码、机内码之间递进式转换,都在这张表里了。

随着社会发展不断更新迭代,区位码、国标码在应用场景上已慢慢淡出了用户视野,现在最常用的则是内码,Unicode。

说了这么多,想想,若没有这些先辈们的坚持与努力,可能我们今天还在用ASCII计算机呢!

感恩所有为中文编码默默奉献的人!

参考文献:

  • 汉字区位码对照表.pdf

  • 百度百科

  • 知乎

计算机中文编码《区位码\国标码\机内码》进阶史相关推荐

  1. 大学计算机的区位码国标码机内码,[计 算 机]汉字区位码\国标码\机内码之间的换算...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 国标与机内码的转换 国标码并不等于区位码,它是由区位码稍作转换得到,其转换方法为:先将十进制区码和位码转换为十六进制的区码和位码,;这样就得了一个与国标码 ...

  2. 台式计算机国标码,在计算机中,国标码是属于什么码?

    满意答案 canrc258 推荐于 2016.08.02 采纳率:44%    等级:12 已帮助:10278人 1.汉字信息的编码知识 ⑴国标码:是指我国1981年公布的"中华人民共和国国 ...

  3. 区位码 国际码 机内码 转换

    1.机内码与区位码 机内码高位字节=(区号)H+A0H 机内码低位字节=(位号)H+A0H 2.国标码与区位码 国标码高位字节=(区号)H+20H 国标码低位字节=(位号)H+20H 3.区位码用两个 ...

  4. 计算机汉字编码国标码,[计 算 机]汉字区位码\国标码\机内码之间的换算

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 国标与机内码的转换 国标码并不等于区位码,它是由区位码稍作转换得到,其转换方法为:先将十进制区码和位码转换为十六进制的区码和位码,;这样就得了一个与国标码 ...

  5. 汉字区位码\国标码\机内码之间的换算

    区位码.国标码与机内码的转换方法: (1)区位码先转换成十六进制数表示 (2)(区位码的十六进制表示)+2020H=国标码:(两位两位相加) (3)国标码+8080H=机内码 (两位两位相加) 举例: ...

  6. 用计算机国标码转机内码,区位码2850怎么转换成国标码和机内码

    2014-09-21 回答 1.机内码与区位码 机内码高位字节=(区号)H+A0H 机内码低位字节=(位号)H+A0H 2.国标码与区位码 国标码高位字节=(区号)H+20H 国标码低位字节=(位号) ...

  7. Educoder计算机数据表示实验(HUST)第1关:汉字国标码转区位码实验

    首先我们需要找到汉字国标码转区位码的软件. 这个资源可以从我上传的资源那里看到. 假如我们输入一下数字,那么我们可以得到转换的结果,即机内码. 然后我们再返回到原始电路: 我们需要对电路进行这样的连接 ...

  8. 自己动手画CPU《计算机组织与结构实验》之计算机数据表示 第1关:汉字国标码转区位码实验 超详细教学

    首先给加法器接上一个常量 再更改常量数据位宽为16位 因为 区位码=国标码+2020H 所以 区位码=国标码-2020H 加法器需要使用补码计算 即 区位码=[国标码]补+[-2020H]补 计算得到 ...

  9. 信息编码--区位码,国标码,内码

    计算机内的信息编码 西文字符编码 西文就是英文,数字,英文标点等等,每个ASCII码以一个字节(Byte)储存,国际通用的7位码用7位二进制数表示一个字符的编码,其编码范围是00000000-0111 ...

  10. 汉字国标码转区位码的实验( EduCoder实验一)

    汉字国标码转区位码的实验 一.基础内容 二.EduCoder(实验一:汉字国标码转区位码) ​ 一.基础内容 区位码是啥? ​ 定义:一个四位的十进制数,区和位构成唯一的二维数组 ​ 区号:2位,位号 ...

最新文章

  1. opencv 检测直线、线段、圆、矩形
  2. 技巧:两部解决U盘安装windows 7
  3. 新手入门Web前端,你需要克服这几点困难
  4. h5+js调取相机做取景框_Ps绘制超复杂逼真相机图标
  5. vm虚拟机win10无法复制文件_远程桌面无法复制粘贴传输文件解决办法
  6. 获取Access数据库中的用户表名
  7. 2021 年全国大学生电子设计竞赛实施过程说明
  8. 宝塔面板6.9.0一键破解脚本
  9. java模块化实践(基于jdk11)-1
  10. android PorterDuffXfermode ,PorterDuff.Mode 使用 以及Porter-Duff规则详解
  11. 2021年育婴员(五级)复审考试及育婴员(五级)实操考试视频
  12. 【12月学习进度3/31—计算机图形学期末准备01】拉格朗日插值 + 三次Hermite插值
  13. 2022年有哪些运动蓝牙耳机值得买,盘点618最值得买的蓝牙耳机
  14. 利用Image-Pro Plus计算图片裂缝面积的方法
  15. Ubisoft Connect失去连接解决办法
  16. Deep Reinforcement Learning for Join Order Enumeration 论文,重新连接,数据库优化
  17. ETM: “黄金时代”不会结束,而是重启
  18. android传感器的学习
  19. vim 电脑壁纸来了(3种主题)
  20. 网站目录需要什么样的权限?IUSER_和NETWORK SERVICE权限如何设置

热门文章

  1. 第16节 ICMP协议详解
  2. ( cf1249 )Codeforces Round #595 (Div. 3)部分题解
  3. python将多个列表合并_Python中将两个或多个list合成一个list的方法小结
  4. 渥太华大学计算机专业,加拿大渥太华大学计算机科学排名第四
  5. Sublime text3 Version 3.2.1 3207 和 3.2.2 3211(2019-11-06亲测有效)
  6. Cadence PSpice 仿真7:电容型带通滤波器参数分析与性能分析仿真实战图文教程
  7. 树莓派是什么?能干什么?和单片机有什么区别?
  8. ArduinoUNO测试VEML6075紫外线传感器
  9. win10系统同时设置静态IP和动态IP
  10. matlab用imcrop进行图片裁剪,并用imwrite存图