很多人都知道,在早期的计算机系统中,计算机只能识别和处理英文,不能识别中文及其他语言文字。
电子计算机诞生的时候,甚至很长一段时间内,是完全基于英文环境的。也就是说计算机只能能处理数字、字母和一些字符。这些数据是由ASCII组成,计算机只支持由ASCII表中定义的字符,精确地讲应该是符号,数量非常少,此范围外的一切“符号”,计算机都不能识别。
这极大地阻碍了计算机的发展和应用。所有非英语国家都非常关心这个事,后来由于技术的发展,显示不同文字这个难题被解决了,但过程非常艰辛。
在这篇文章嚅,我只是简单地讲解一下,计算机如何显示汉字,不过多讲解其中的专业术语和原理。来,我们来看一下究竟是怎么解决的。
最主要的知识点,计算机只识别0和1,所有信息均需要转成0和1,包括英文字母和其他文字。所有的字符最终都要被编成计算机能识别的计算机码,我们称为机内码。我们把所有的字符都变成了计算机码表,称为ASCII码。
ASCII码表ASCII扩展表前面讲过,ASCII码只有英文字母、数字及一些字符。看上面这两张图,我们就知道了ASCII码只有个字符,早期的电脑只能显示这个字符,当然就只能显示英文了。
显示的过程是这样的,首先为这个字符制作一个标准字库,即8x8点阵,并对应各字的编码。当你从键盘敲入一个字母”D“时,”D“的ASCII码十进制是68,计算机从标准字库里找到第68位置的点阵,把他们按点阵的黑与白,在光标的位置打下这个点阵,就显示出了D。
字符点阵如果你设置的是不同的字体和字号,计算机就从相应的字体库里找到第68号点阵,并相应地放大显示出来。这个原理本身就适合汉字及其他语言文字,但为什么一开始,计算机不支持汉字呢。
因为,计算机是美国发明的,发明者根本不懂中文,也从没考虑上计算机上显示中文和其他语言。即使他想考虑,他也没能力考虑,把其他语言编码根本不是他的工作,而且工作量庞大。而英文只有26个字母,加上其他字符,也没超过个,当时一期仅仅考虑个字符,足以玩转计算机了。
只是到了后来,计算机技术迅速发展起来了,各个国家,尤其是中国开始意识到计算机如何显示汉字的问题。发现必须给汉字编码,汉字才能象英文一样在计算机上显示。最后,在国家力量下,中国国家标准总局年发布的GB编码是第一个汉字编码国家标准,年5月1日开始使用。GB编码共收录汉字个,其中一级汉字个,二级汉字个。同时,GB编码收录了包括拉丁字母、希腊字母、日文平假名及片假名字母、俄语西里尔字母在内的个全角字符。
纯英文电脑使用的ASCII码总共个,一个字母占用一个字节大小,由8位二进制表示,8个1正好是,所以ASCII码的二进制范围就是从到。一个字母占用一个字节。而汉字用一个字节,共8位二进制,显然远远不够。所以汉字用两个字节,16位,2的16次方等于,理论上讲两个字节可以表示6万多汉字和字符。我们刚刚说过,GB编码里总共字符一万多个,都不到两万个,所以两个字节表示汉字及字符足够了。
汉字码表但是ASCII码和GB编码都是机器内码的话,我敲入一个”D“,即便系统转成机器码68,但这个68该显示哪个码表里的字符啊,因为大家都从0开始排码的话,肯定都有68,肯定会重复。由于ASCII码发明在先,其他码发明在后,所以后发明的码一定要做让步,幸好GB编码根本用不了这些码,所以它不从0开始了,而是把高位置1,从1000开始,用十进制表示就是2的15次方,从开始到还有3万多码可以用,相当于只用一半的码来表示汉字。而ASCII码相当于从开始到,永远也不会与汉字编码冲突。
也就是说,当你敲键盘时,不打开输入法,或者说打开英文输入法,计算机自动寻找ASCII码表,如果你打开汉字输入时,计算机自动寻找GB编码。找到码后。显示的原理就是一样了。
至于半角与全角,是这样的。拿字母和数字举例,半角就是ASCII码表里的字符,占一个字节。全角就是GB编码里的字符,占两个字节,一个全角的D就相当于一个汉字。因为从输入法上,字母和数字不再另编外码(就是键盘输入码),所以要区分ASCII码表和GB编码就用全角与半角切换使用。
同样,各个国家和地区都用同样的方法编制了自己语言文字的编码,比如台湾地区的Big5码,日本、韩国及阿拉伯国家也各自有各自己的编码,全世界各种语言都可以在计算机上显示了。
汉字编码输入与输出过程而且随着技术的发展,只要你的电脑上存在不同的码及相关的软件,你的电脑就可以显示其他国家和地区的文字。当然,随着时代的发展,编码也在不断升级,从而满足不同的需要。我国的汉字也经历了多次编码,常见的有:
年起,我国颁布了一系列编码字符集标准和规范:
1)GB-80《信息交换用汉字编码字符集-基本集》(年)
2)GB.1-93《信息技术通用多八位编码字符集(UCS)第一部分:体系结构和基本多文种平面》(年)
3)GBK《汉字内码规范(GBK)》1.0版(年)
4)GB-《信息技术信息交换用汉字编码字符集基本集的扩充》(年)
常见编码之间的关系:
1)GB,向下兼容ASCII(GB,繁体字型;GB,简体字型)
2)GB.1,向下兼容GB
3)GBK,向下兼容GB和GB.1
4)GB,向下兼容GB、GB.1和GBK
这节课就进到这里,下节课跟大家交流一下输入法的原理是什么,感兴趣的同学可以