关于gb2321编码的疑问

一个字节中有8个bit分别表示了0到255共256个数字

其中0到127共128个数字被ascii码使用了

后面ascii拓展又说用了32个数字作为C1控制块 分别是0x80到0x9F

所以后面剩下96个数字没有使用 分别是0xA0到0xFF

96个数字代表着96个可能性,显然每个数字和一个中文字符一 一对应是不可能的

因为96个中文字符远远不够用。

因此,使用两个ascii码来表示一个中文字符

两个ascii可以产生96x96约等于10000个可能性,也就是能对应约10000个字符

勉强够用

那么问题来了 gb2321并不是使用96x96 而是使用94x94为什么呢?

据我了解gb2321定义了94个区,每个区又有94位。

将区/位转化为二进制编码时都要加上0xA0

最小0xA0+1 = 0xA1 最大0xA0+94 = 0xFE

范围是0xA1到0xFE共94个数字

上面所说ascii码有96个数字未使用,中文编码gb2321,就使用了这96个数字中的94个

对比一下,可以发现刚好是掐头去尾,为什么要这么做呢?有什么意义,又或者是没意义。

https://blog.csdn.net/cjw201231010314/article/details/100484452