乱码从哪来:GBK、Big5 和 UTF-8


目录

适合谁看:打开文件、网页、表格时遇到乱码,想知道原因和解决办法的人。

字符集和编码方式

同一个「中」字,用 UTF-8 存是 3 个字节,用 GBK 存是 2 个字节。读的时候用错规则,就会得到乱码。

常见的中文编码

编码 范围 说明
GB 2312 6763 个汉字 早期简体中文编码
GBK 两万多个汉字 GB 2312 的扩展,Windows 简体中文系统长期默认使用
GB 18030 全部 Unicode 字符 国家标准,兼容 GBK,见《GB 18030:中文编码的国家标准》
Big5 繁体常用字 台湾、香港早期常用
UTF-8 全部 Unicode 字符 网页和现代软件的事实标准

典型乱码现象

怎么避免

  1. 统一用 UTF-8:网页、数据库、接口、文件都用 UTF-8;
  2. 网页声明编码:<meta charset="utf-8"> 写在 <head> 最前面;
  3. 数据库用完整的 UTF-8:例如 MySQL 要用 utf8mb4,见《人名、地名里的生僻字:系统怎么做》;
  4. 和老系统交换数据时:明确约定编码,需要中文国标编码时用 GB 18030 而不是 GBK,GBK 存不下扩展区的生僻字。

乱码和方框不是一回事

乱码是编码问题,换字体没用;方框是字体缺字,换字体就好。区别见《生僻字为什么打不出、显示不了》。


版本号 #10
由 壳壳虫 创建于 2026-10-29 03:03:01 UTC
由 壳壳虫 更新于 2026-10-30 08:38:24 UTC