字母变成数字
电脑只懂数字,那字母怎么存?靠字符编码。

电脑只懂 0 和 1,可你打的字明明是 ABC 和中文。电脑怎么存这些字呢?办法是给每个字编一个号!比如 A 是 65、B 是 66、a 是 97……电脑存的其实是这些数字,显示的时候再按号找出对应的字。这套“字和号对应表”,就叫“字符编码”。
你知道吗
你知道吗?最早通用的编码叫 ASCII,只编了 128 个字符——英文字母、数字和符号够用了,但中文、阿拉伯文都装不下。后来才有了能装全世界所有文字的 Unicode 编码。
从 ASCII 到 Unicode
ASCII 是美国人发明的,用 7 位二进制(0 到 127)给英文字母、数字、标点编号。比如空格是 32、A 是 65、a 是 97、0 是 48。电脑存一个英文字母就存一个 8 位的字节。但中文有几万字,128 个号远远不够,所以中国人用了两字节编码(GB2312),后来全世界一起搞了 Unicode,每个字都有唯一的号。
Unicode 最常用的存法叫 UTF-8,它很聪明:英文字母用 1 个字节(省地方),中文用 3 个字节,生僻字用 4 个字节。所以同样一篇文档,英文版比中文版小很多。你浏览网页、发微信、存文件,背后都是 UTF-8 在默默给每个字编号。没有编码,电脑就显示不出任何文字。
- ASCII 用数字给英文字母编号
- A=65、a=97、0=48
- 中文太多,ASCII 装不下
- Unicode 给全世界文字都编号
- UTF-8 是 Unicode 最常用的存法
编码出错会出笑话。比如一段中文用一种编码存、用另一种编码读,就会显示成乱码“烫烫烫”或“锟斤拷”。这就是编码没对上。所以发文件、做网页,都要约定好用哪种编码,才不会乱。程序员调试乱码,常就是在查编码对不对。
动手试试
动手玩:在网上搜“ASCII 表”,找出自己名字首字母的编号(比如小明的小写 x 是 120)。用 ASCII 码给朋友写一串数字“信”,让对方查表解出来。再想想:为什么英文网页常比中文网页小?(英文每字 1 字节,中文每字 3 字节)。把你的名字、生日翻译成 ASCII 数字串,做个“数字名片”。
每个字,都有一个数字身份证。——编程小语


