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