C语言基础之中文编码格式GB2312(4)

不想你离开。 提交于 2019-12-01 20:26:42

GB2312历史回顾

GB2312编码范围:A1A1-FEFE,其中汉字编码范围:B0A1-F7FE。

GB2312编码是第一个汉字编码国家标准,由中国国家标准总局1980年发布,1981年5月1日开始使用。GB2312编码共收录汉字6763个,其中一级汉字3755个,二级汉字3008个。同时,GB2312编码收录了包括拉丁字母、希腊字母、日文平假名及片假名字母、俄语西里尔字母在内的682个全角字符。

分区表示
GB2312编码对所收录字符进行了“分区”处理,共94个区,每区含有94个位,共8836个码位。这种表示方式也称为区位码。
01-09区收录除汉字外的682个字符。
10-15区为空白区,没有使用。
16-55区收录3755个一级汉字,按拼音排序。
56-87区收录3008个二级汉字,按部首/笔画排序。
88-94区为空白区,没有使用。
举例来说,“啊”字是GB2312编码中的第一个汉字,它位于16区的01位,所以它的区位码就是1601。

双字节编码
GB2312规定对收录的每个字符采用两个字节表示,第一个字节为“高字节”,对应94个区;第二个字节为“低字节”,对应94个位。所以它的区位码范围是:0101-9494。区号和位号分别加上0xA0就是GB2312编码。例如最后一个码位是9494,区号和位号分别转换成十六进制是5E5E,0x5E+0xA0=0xFE,所以该码位的GB2312编码是FEFE。

GB2312编码范围:A1A1-FEFE,其中汉字的编码范围为B0A1-F7FE,第一字节0xB0-0xF7(对应区号:16-87),第二个字节0xA1-0xFE(对应位号:01-94)

若要查询具体字符的编码请前往:汉字字符集编码查询


 

GB2312编码格式采用的是区位码格式:GB2312为双字节编码,其中第一个字节为高字节,对应1-94个区,第二个字节为低字节,对应1-94个位。我们知道一个字节对于8位,8位的数可以表示的范围0-256,但是这里采用的范围是1-94,1-94是一个规定或者说是规范。当区号和位号分别加上0xA0就是GB2312编码,这也是一个规定。

我们再来捋一下区号和位号的组合体:其范围0101  -  9494。

接下来再加上一个0xA0十六进制数变成GB2312编码:高字节的最小数1转换成GB2312码:1(10) + 0xA0 = 0x01 + 0xA0 = 0xA1,高字节的最大数94转GB2312码:94(10) + 0xA0 = 0x5E + 0xA0 = 0xFE

得GB2312编码范围:A1A1 - FEFE

原文链接:https://www.qqxiuzi.cn/zh/hanzi-gb2312-bianma.php

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!