Skip to content

编码与字符集(Encoding & Charset)

编码(Encoding)和字符集(Charset)经常被混用,但它们不是一回事。

字符集(Charset)

字符集是“有哪些字符”的清单,以及这些字符对应的编号(码点)。

比如 Unicode 字符集里:

  • A 的码点是 U+0041
  • 的码点是 U+4E2D

编码(Encoding)

编码是“如何把码点变成字节序列”。

例如 UTF-8 是一种编码方式:

  • A -> 1 字节(0x41)
  • -> 3 字节(0xE4 0xB8 0xAD)

不同编码方式决定了“同一个字符”如何变成不同的字节序列。

乱码的本质

乱码通常是“用错了解码方式”。

例如:

  • 文件是 UTF-8 编码
  • 你用 GBK 去解码

结果就会出现“看起来像噪音”的字符。

常见组合

  • Unicode + UTF-8:现代 Web 的事实标准。
  • Unicode + UTF-16:某些系统内部表示常见。

简单建议

  • 文件统一使用 UTF-8。
  • 工具显示乱码时,尝试切换编码。

进一步阅读

理解编码与字符集的区别,是理解“文本为何会坏掉”的基础。

CC-BY 4.0 Licensed