首页 / 百科 / UTF-8

UTF-8

编码

互联网主流的 Unicode 传输格式

UTF-8 是 Unicode 的变长字节编码(RFC 3629,2003),用 1–4 个字节表示任意码位,完全兼容 ASCII,如今占全球网页编码的 98% 以上。

变长设计的智慧

UTF-8 由 Ken Thompson 与 Rob Pike 于 1992 年设计。ASCII 字符(U+0000–U+007F)用 1 个字节且最高位为 0,与 1963 年的 ASCII 完全逐字节兼容——老系统看到 UTF-8 文本至少不会乱码。中文等字符用 3 字节,emoji 用 4 字节。首字节的前导 1 的个数就是总字节数,续字节恒为 10xxxxxx,因此任意位置都可靠地重新同步。

标准与普及

正式规范见 RFC 3629(2003),UTF-8 被 POSIX、HTML5(默认编码)、JSON(RFC 8259 要求)、XML 声明广泛采纳。W3C 自 HTML5 起将 UTF-8 列为唯一推荐编码,2010 年前后超越其他所有编码成为网页主流。

BOM 与无 BOM

UTF-8 可选地以 EF BB BF 开头(BOM,字节序标记),Windows 记事本旧版默认加 BOM,而很多 Unix 工具会把 BOM 当正文首个字符处理导致问题。Web 场景建议无 BOM,靠 HTTP 头或 <meta charset> 声明编码。

常见乱码场景

"中国"式乱码是 UTF-8 字节被按 Latin-1 解读;"涓枃"是 UTF-8 字节被按 GBK 解读;每字一个 ? 是编码时丢失信息(target 编码不含该字符)。排查思路固定:确认源端编码 → 确认传输是否改码 → 确认目标端解码方式。

相关工具

相关词条