历史悠久的泱泱中华,文化博大精深,文字独一无二,且能没有一套属于自己的计算机编码 。1980年,为了使每个汉字有一个全国统一的编码,我国颁布了汉字编码的国家标准:GB2312-80《信息交换用汉字编码字符集》基本集,这个字符集是我国中文信息处理技术的发展基础,也是国内所有汉字系统的统一标准 。将一些常用符号及汉字,按区与位的方式编入码表,这套编码便是区位码 。
一、区位码
【颁布了汉字编码的国家标准 区位码和国标码的转换】 区位码是一个四位的十进制数,高两位为区码(01-94),低两位为位码(01-94),由此组成一个94×94的矩阵,每个码值都对应着一个唯一的符号或汉字 。如下图示:
![颁布了汉字编码的国家标准 区位码和国标码的转换](https://oss.xajjn.com/article/2023/07/30/4899.jpg)
文章插图
图1. 第01区 特殊符号
![颁布了汉字编码的国家标准 区位码和国标码的转换](https://oss.xajjn.com/article/2023/07/30/4900.jpg)
文章插图
图2. 汉字区位码对照表
说明:‘啊’的区位码为1601,区码为16,位码为01 。
![颁布了汉字编码的国家标准 区位码和国标码的转换](https://oss.xajjn.com/article/2023/07/30/4901.jpg)
文章插图
图3. 多音字‘腌’
说明:这种编码经过加工整理一律以汉语拼音的字母为序,音节相同的字以使用频率为序,其查找方法与一般汉语字典的汉字拼音音节索引查找法相同 。由于它是一种无重码的汉字编码,所以多音字只有一个编码 。例如:重庆的“重”和重量的“重”,字同音不同,汉字“重”的编码是按Zhong 音编码 。
由图2,图3所示,按拼音音节索引时,编码并不连续,这是因为汉字被分级处理,一级汉字相对更为常用 。如下图示:
![颁布了汉字编码的国家标准 区位码和国标码的转换](https://oss.xajjn.com/article/2023/07/30/4902.jpg)
文章插图
图4. 区段说明
说明:在某些硬件指标相对偏低的平台上可能依然还在使用着一级码汉字 。
二、国标码
汉字区位码定义好后融入计算机,发现少了一些控制符,如回车,换行,退格等,同时ASCII编码中前32个控制码刚好包含了这些,那就借来用用吧!为此,国标码诞生了 。为了兼容这些控制码,国标码规定在区码、位码的基础上分别加20H(即32的16进制数) 。例如:汉字‘啊’的区位码为1601,则区码为16,位码为01,转换成16进制后,区码为10H,位码为01H,转国标码,则区码10H+20H=30H,位码01H+20H=21H,合成后国标码为3021H;
![颁布了汉字编码的国家标准 区位码和国标码的转换](https://oss.xajjn.com/article/2023/07/30/4903.jpg)
文章插图
图5. 国标码
说明:图5为Mac系统中的16点阵中文国标码点阵字库,‘啊’的国标码为3021H 。
三、机内码
这里特指汉字机内码,简称“内码”,亦称“变形国标码”,指计算机内部存储,处理加工和传输汉字时所用的由0和1符号组成的代码 。
国标码虽说很好地解决了控制字符问题,但随着社会的发展,汉字处理系统想要兼容英文(当时主流就是ASCII),当系统中同时存在ASCII和汉字国标码时,将会产生二义性 。例如:有两个字节的内容为30H和21H,它既可表示汉字“啊”的国标码,又可表示ASCII中的“0”和“!”,为此,汉字机内码诞生了 。由于ASCII编码范围为00H~7FH,字节最高位皆为‘0’,机内码应对国标码加以适当变换处理,将相应国标码每个字节的最高位置为“1”,即:汉字机内码=汉字国标码+8080H 。例如:“啊”字的国标码是3021H,则其汉字机内码为B0A1H=3021H+8080H 。
![颁布了汉字编码的国家标准 区位码和国标码的转换](https://oss.xajjn.com/article/2023/07/30/4904.jpg)
文章插图
图6. 机内码
说明:图6为按照Windows CP936(内码)编码生成的16Pixel中文点阵字库,只包含了一级码汉字(3755个字符),‘啊’的编码为:B0A1H 。
上述所述,不论是区位码,国标码,还是机内码,主要都是针对GB2312-80标准(7K+字符),若按区位码94×94矩阵计算,最大也只能表达94×94=8836个字符,这时有人可能会问,若要支持更多的中文怎么办呢?
这自然难不倒勤劳又机智的“中国人” 。看懂下面这张图,就都明白了 。
![颁布了汉字编码的国家标准 区位码和国标码的转换](https://oss.xajjn.com/article/2023/07/30/4905.jpg)
文章插图
说明:这里主要记录汉字编码,并且第一字节最高位皆为‘1’,也能很好的做到向前兼容 。
- GB2312-80,字符数 6763 = ①
- GBK,字符数 21003 = ①+②+③
- GB18030-2000,字符数 27533 = ①+②+③+④
- GB18030-2005,字符数 70244 = ①+②+③+④+⑤
推荐阅读
- 皮拖鞋怎么清洗 拖鞋被染黑了怎么清洗
- 湛江习俗,男人到了31岁或41岁要做“一”,这样做是什么意思
- 不太想干工程了,有什么好的出路?
- 反拐宣传法律常识
- 奥迪车载tpc充不进电怎么回事 奥迪的车载充电器为什么充不了电
- 车辆过户路桥费怎么办 车过户几年了突然要收路桥费
- 车辆过户了怎么查询 车过户怎么查询已过户查询
- 车辆过户了保险怎么退 车辆过户了保险怎么退钱
- 车辆过户了保险怎么交 车辆过户保险怎么过
- 信用卡免密支付关了影响ETC吗