Appearance
编码与字符集(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。
- 工具显示乱码时,尝试切换编码。
进一步阅读
理解编码与字符集的区别,是理解“文本为何会坏掉”的基础。