一句话说清

计算机只分辨通与断,内容都是按约定拼出来的。

为什么值得懂

打开文件弹出乱码、老照片打不开,不是坏了,而是两边的约定没对上。懂了编码就明白,「文件」不过是一串 0 和 1 加一份约定。它也是《硬件与软件》的下一块砖。

零基础讲解

为什么偏偏是两种状态。 电路最容易稳定地做到通电与断电:分两档,噪声很难读错;分得越细,一点抖动就认不出来。多表示东西靠加位数,不是切细档位。佩措尔德在《编码》第 2 章用莫尔斯码说明同一件事。

位与字节。 位就是一个 0 或一个 1;8 位凑成 1 字节,能表示 256 种取值。

字符编码:从 ASCII 到 Unicode。 ASCII 用 7 位给 128 个字符编号,装不下汉字,各地只好各自扩展;同一个字节换个约定读出来就是别的字,这就是乱码。Unicode 先给每个字符一个编号,再规定它怎么变成字节:UTF-8 下英文字符占 1 字节,常用汉字占 3 字节。主流观点是它已是互联网默认约定。

图像与声音:都是采样。 图被切成密密麻麻的方格,每格记一组颜色数值;声音则每秒量几千到几万次波形高度,记成数字。格子越细、档位越多,越像真的。采样率要高过声音最高频率的两倍才能完整还原,这叫奈奎斯特—香农采样定理。

编码就是约定。 同一串字节,用 UTF-8 读是中文,用 GBK 读可能是怪字。字节里没写着「我是什么」,解释权在读取的一方,正像《编程思维》里说的接口。

从内容到二进制再还原的流程:文字图像声音经编号或采样变成一串 0 和 1,再按约定还原;英文字符占 1 字节,常用汉字占 3 字节
内容先被编号或采样成 0 和 1,再按同一份约定读回来。

一个例子

写下「中」字,按 UTF-8 它是 3 个字节:E4 B8 AD;同一串字节交给 GBK 去读,就成了另一个字甚至方块。文件一个字没改,变的是谁按哪本字典读。

常见误解

  • 以为计算机真在算 0 和 1:它区分的是电压高低,0 和 1 只是名字。
  • 以为乱码是文件坏了:多数只是读取时用错了约定。
  • 以为编码只跟文字有关:图片与声音同样是采样。

应用场景

  • 生活:遇到乱码就去改文件的编码设置,换一次往往就好。
  • 职场:发文件优先用 UTF-8 纯文本或 PDF,约定越通用,对方出错越少。
  • 写作与创作:别用全角空格凑排版,看不见的编码差异会变成怪字符。

关联知识点

  • 硬件与软件(hardware-software,先读它理解两种状态)
  • 编程思维(programming-mindset,约定就是接口)
  • 互联网原理(web-internet,网页默认编码)