为什么计算机会出现乱码—二进制(二)

2019-08-19 21:41:11 浏览数 (1)

与其用特殊方式来表示字母,计算机可以用数字表示字母,最直接的方法是给字母编号:A是1,B是2,C是3,以此类。著名英国作家 弗朗西斯·培根(Francis Bacon),曾用 5位序列来编码英文的 26 个字母。在十六世纪传递机密信件,五位(bit)可以存 32 个可能值(2^5)。 这对26个字母够了,但不能表示 标点符号,数字和大小写字母。

ASCII

ASCII,美国信息交换标准代码,发明于 1963 年,ASCII 是 7 位代码,足够存 128 个不同值,范围扩大之后,可以表示大写字母,小写字母,数字 0 到 9, @ 这样的符号, 以及标点符号。举例,小写字母 a 用数字 97 表示,大写字母 A 是 65。: 是58 ) 是41。ASCII 甚至有特殊命令符号,比如换行符,用来告诉计算机换行。在老计算机系统中,如果没换行符,文字会超出屏幕,因为 ASCII 是个很早的标准,所以它被广泛使用。

让不同公司制作的计算机,能互相交换数据,这种通用交换信息的能力叫 "互用性",但有个限制:它是为英语设计的幸运的是,一个字节有8位,而不是7位,128 到 255 的字符渐渐变得常用。这些字符以前是空的,是给各个国家自己 "保留使用的"。在美国,这些额外的数字主要用于编码附加符号,比如数学符号,图形元素和常用的重音字符。另一方面,虽然拉丁字符被普遍使用,在俄罗斯,他们用这些额外的字符表示西里尔字符,而希腊电脑用希腊字母等等。

乱码

这些保留下来给每个国家自己安排的空位, 对大部分国家都够用,问题是,如果在 土耳其 电脑上打开 拉脱维亚语 写的电子邮件,会显示乱码,随着计算机在亚洲兴起,这种做法彻底失效了。中文和日文这样的语言有数千个字符,根本没办法用 8 位来表示所有字符!为了解决这个问题,每个国家都发明了多字节编码方案,但不相互兼容。

Unicode

日本人总是碰到编码问题,以至于专门有词来称呼:"mojibake" 意思是 乱码,所以 Unicode 诞生了 - 统一所有编码的标准设计于 1992 年,解决了不同国家不同标准的问题,Unicode 用一个统一编码方案。最常见的 Unicode 是 16 位的,有超过一百万个位置 -对所有语言的每个字符都够了。100 多种字母表加起来占了 12 万个位置。还有位置放数学符号,甚至 Emoji。就像 ASCII 用二进制来表示字母一样。

其他格式 - 比如 MP3 或 GIF ,用二进制编码声音/颜色,表示照片,电影,音乐。重要的是,这些标准归根到底是一长串位短信, YouTube 视频,互联网上的每个网页甚至操作系统,只不过是一长串 1 和 0。

0 人点赞