个人练手与前端学习用,非正式站点。

← 文章列表

字符编码与 UTF-8:为何会出现「乱码」

计算机底层只认二进制。把「文字」变成字节序列的规则,就是字符编码。 编码不一致时,同一段字节会被解释成错误字符,即所谓乱码

1. 字符集与编码方案

字符集定义有哪些字符及编号(如 Unicode 为大量书写系统分配码点)。 编码方案则规定这些码点如何序列化为字节(UTF-8、UTF-16 等)。

2. UTF-8 的特点

  • 对 ASCII 兼容:英文字符仍占一字节,便于与旧协议共存。
  • 变长编码:不同字符占 1~4 字节,英文省空间,中文等多字节。
  • 互联网上极为常见:HTML 常声明 charset=utf-8

3. 实践建议

  • 源码、配置文件、数据库连接尽量统一为 UTF-8,并在文档中写明。
  • 跨系统传输时关注 BOM 与「带不带签名」差异,避免隐式二次解码。
  • 日志与终端编码不一致时,错误信息可能「看起来像乱码」,需分层排查。

历史编码(如部分地区曾用的双字节方案)仍可能出现在遗留数据中;迁移时应做显式转码与校验。