UTF-8 是 Unicode 最常用的存储编码,用 1–4 个字节表示一个字符:ASCII 字符 1 字节,拉丁字母扩展 2 字节,常用汉字 3 字节,emoji 等 4 字节。下面重点说明还原步骤与常见错误。
UTF-8解码方法
解码方向:读首字节判断长度 → 取后续 10xxxxxx 字节 → 拼出码点 → 字符。
- MySQL 的 utf8 实际是 3 字节的 utf8mb3,存 emoji 会报错,应使用 utf8mb4
- Windows 记事本旧版本保存的“UTF-8”带 BOM,可能导致 PHP 输出多余字符、shell 脚本报错
示例
输入:2026-11-11
编码结果:32 30 32 36 2D 31 31 2D 31 31
说明:按 UTF-8 共 10 字节。
与相关技术的区别
UTF-8 与 GBK:UTF-8 覆盖全部 Unicode,汉字 3 字节;GBK 只覆盖简繁汉字和部分符号,汉字 2 字节,但不能表示 emoji 和多数外文。UTF-8 与 UTF-16:UTF-16 中 BMP 字符 2 字节,适合内存中处理(Java、JavaScript、Windows 内部),但不兼容 ASCII。
Java 示例
下面是 Java 中处理UTF-8的常用写法:
byte[] b = "中".getBytes(StandardCharsets.UTF_8); // [-28, -72, -83]
String s = new String(b, StandardCharsets.UTF_8);运行前确认输入的字符集(推荐 UTF-8),结果可以用本站工具交叉核对。
本站的字符编码检测工具可以直接处理,计算在浏览器本地完成,适合快速核对结果。
常见问题
【UTF-8 能表示所有汉字吗?】能,包括所有 CJK 扩展区汉字。
【一个汉字在 UTF-8 中占几个字节?】常用汉字 3 个字节;扩展 B 区及以后的生僻字 4 个字节。
【UTF-8 和 utf8mb4 有什么区别?】utf8mb4 是 MySQL 中真正完整的 UTF-8;MySQL 的 utf8 最多 3 字节,不能存 emoji。
文中示例可以在本站对应工具中验证;处理密码、证件号等敏感数据时,请注意保护隐私。