你在记事本里打中文,保存时弹出“编码格式”选项:ANSI、UTF-8、Unicode(UTF-16)……点错一个,打开就变乱码。同事发来一个CSV表格,Excel里显示“æå¸å…¬å¸”,复制到微信又正常了——这背后,全靠一张看不见的“编码对照表”在悄悄干活。
编码不是密码,是“字和数”的身份证
电脑只认0和1,不认识“啊”“中”“A”。所以得给每个字符配个唯一的数字编号,比如:
A → 65
a → 97
0 → 48
空格 → 32这个“字符 ↔ 数字”的映射关系,就是最原始的编码对照表。最早用的是ASCII表,总共128个位置,够装英文大小写、数字、标点,但中文一个都装不下。
中文怎么进电脑?GBK和GB2312先扛起大旗
上世纪80年代,中国出了GB2312标准,把6763个常用汉字、682个符号,按区位分组,编成双字节码。比如:
“啊” → 0xB0A1(十六进制)→ 十进制 45217
“中” → 0xD6D0 → 十进制 54992后来扩展成GBK,支持2万多个汉字,Windows简体中文系统默认用的就是它。你双击打开一个老txt文件,没乱码,大概率就是GBK在默默匹配。
现在为啥都推UTF-8?因为它“一人一码,全球通用”
UTF-8是Unicode的一种实现方式。Unicode本身是一张超大对照表,为全世界所有文字统一编号:“中”是U+4E2D,“€”是U+20AC,“😂”是U+1F602。UTF-8负责把这些编号,按规则转成1~4个字节存进硬盘。
好处很明显:同一份文件,无论打开它的电脑是Win、Mac还是Linux,只要软件支持UTF-8,就能正确显示中日韩、阿拉伯文甚至emoji。网页HTML头部写上 <meta charset="UTF-8">,浏览器就知道该查哪张表。
怎么查?别死背,用工具现找
Windows自带“字符映射表”(charmap.exe),选个字,底下直接显示Unicode码点;Mac用“字符查看器”;程序员常用在线工具如utf8-chartable.de,输入“中”,立刻列出它在UTF-8、UTF-16、GBK里的各种字节序列。
下次遇到乱码,别急着重开——先右键文件属性看“编码类型”,再用编辑器(比如Notepad++或VS Code)手动切换编码尝试。能对上号,就是对照表找对了人。