1.94x94的故事
开门见山,gb2312编码实质上是一种对{汉字集合}排序管理的方法。汉字集合很好理解,不废话了。为什么要对汉字排序管理呢?这个问题好比新华字典里的汉字为什么按a/b/c/../z的顺序排列呢,答案就是为了使用方便。
经google得知,gb2312编码在大约30年前的1981年就制定出来了。当时计算机可想相当精贵,但现在从gb2312编码上看,当时这批制定者应该有一定的IT经验。他们聪明地构造了一个94x94的二维表,将当时需要处理的汉字散布在这8836个表格子里。不要问我为什么是94x94的二维表?他们可能觉得这个数量值应该能存放不少汉字了吧,我想这个答案只有他们最清楚。
为什么说他们聪明呢?因为他们不是将汉字胡乱、毫无规律地放进这些表格子里。所以你可能会立即想到他们可能按照拼音将汉字依次放进这些格子,的确,他们这么做了。gb2312里有一大部分汉字的排序方式就是按拼音规律 存放在这些格子里,还有一小部分留着各位看客自己研究吧,顺便提一下,要是研究出来个所以然,在下请麻烦您在本文下面回复一句,提点下我。
废话了半天,为的只是一个目的,就是,现在假设制定gb2312编码的制定者们把{汉字集合}里的汉字都放进这94x94的格子里了。到这里,不要有疑问,只要知道这回事就行了,因为你的疑问也改变不了gb2312的编码方式了。除非借个越光宝盒,回到30年前,改变制定者们的策略。可我想,即使真有月光宝盒,估计回去还没有成为受精卵,所以仍然无法改变事实。所以,就接受这个事实吧。汉字就这么地被安排在格子里啦。
下面使用中国的三个著名城市重庆、上海、香港梯度地说明计算机如何理解gb2312编码的过程。这里要严格区分一件事,虽然20世纪80年代的制定者将汉字已经排好序了并且已经让每个汉字都有个序号,但是在现今计算机里,这些序号表示不了对应的汉字,这些序号必须经过一定的算法才能成为各自汉字的代名词。
2.汉字的gb2312编码---重庆---区位码---算法1
汉字被放进这些格子里了,这些制定者为什么要这么做?好吧