上章讲完了ASCII码表,现在假设我们就处于这个时代,只有ASCII码表,我作为一个电脑的使用者,我在这里打字,我是不能敲中文字符的。
因为ASCII码表里面,根本就没有中文的对照关系,只能敲英文字符,我们敲得英文字符首先是转成ASCII码表里面对应的二进制数,然后存到内存里。
但是内存里的数据是断电立马就丢失掉了,所以我们要永久保存的话,就要存到硬盘里。
现在内存里存的是二进制,当然,我们存硬盘,里面也是存的二进制格式所以直接把我们内存里的二进制放到硬盘里就可以了。
现在我要打开这个硬盘里的文件,那就是把这个二进制数据读到内存然后再参考ASCII码表把这个二进制数据反向解码成对应的字符,文件就打开了。
这个时候是没有乱码问题的,也不可能有乱码的问题,因为现在是ASCII码表一统天下。
接着咱们中国人看到了,就把美国人的计算机买过来了,买过来以后发现不行啊,我买了你的计算机,我只能敲英文字符,中文字符不能接写,那怎么办?
毫无疑问,ASCII码表的标准不能在计算机里做为唯一的标准来使用了,需要换一种标准。
于是我们就开始制定自己的标准,这个标准就叫GBK,GBK其实也很简单,也就是字符和数字的对应关系,只是增加了中文字符,比ASCII码表长一点而已。
但是这个时候我们再采用8位二进制数,来对应一个字符,很明显就不够用了,8位只能表示256个数,中文字符那么多,完全不够用,那么89位不够用,就继续加位数。
最后加到了16位,而2的16次方是65536。其实世界上人们所用的字符没我们想象的那么多。
小日子过的不错的国家都知道吧!他们其实抄袭了我们很多汉字,比如‘女’这个字,他们国家也用,只是可能意思和我们不太一样。
所以说世界上那么多符号,其实很大一部分都是一样的,65536那么多数字已经基本上足够容纳世界上大部分字符了。
但是我们在进行GBK编辑的时候,只是把中文字符和英文字符编进去了,事实上GBK也不是把所有的中文字符都编码进去了,你会发现是特别生僻的字的话,你打电脑根本就不会打出来。
这就是因为编码的问题,由于8位二进制数足够表示英文字符的,所以GBK还是继续保持继续用8位二进制数来表示英文字符。
用16位二进制数表示中文字符。
如果都保持统一,英文字符也用16位二进制数的话,其实是对内存空间的一种浪费,因为你英文字符根本就用不到16位。
前面都用0来占着位置,这就太浪费了。