UTF-8原理图解

57 0

UTF-8 是 Unicode 最常用的存储编码,用 1–4 个字节表示一个字符:ASCII 字符 1 字节,拉丁字母扩展 2 字节,常用汉字 3 字节,emoji 等 4 字节。下面重点说明用步骤把过程说清楚。

UTF-8原理图解

编码时根据码点大小选择字节数,把码点的二进制位依次填进字节格式的 x 位。例如“中”U+4E2D 的二进制是 0100 1110 0010 1101,填入 3 字节格式得到 11100100 10111000 10101101,即 E4 B8 AD。解码时看首字节的前导 1 的个数就知道这个字符占几个字节。

示例

输入:user@example.com

编码结果:75 73 65 72 40 65 78 61 6D 70 6C 65 2E 63 6F 6D

说明:按 UTF-8 共 16 字节。

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 乱码的典型样子:“中文”是 UTF-8 被当作 Latin-1;“涓枃”是 UTF-8 被当作 GBK;“锟斤拷”是 GBK 显示的替换字符;“���”是无法解码的字节。根据样子判断是哪一步解码用错了字符集。

本站的字符编码检测工具可以直接处理,计算在浏览器本地完成,适合快速核对结果。

常见问题

【UTF-8 能表示所有汉字吗?】能,包括所有 CJK 扩展区汉字。

【一个汉字在 UTF-8 中占几个字节?】常用汉字 3 个字节;扩展 B 区及以后的生僻字 4 个字节。

【UTF-8 和 utf8mb4 有什么区别?】utf8mb4 是 MySQL 中真正完整的 UTF-8;MySQL 的 utf8 最多 3 字节,不能存 emoji。

文中示例可以在本站对应工具中验证;处理密钥、证书等敏感数据时,请注意保护隐私。

署名:123问编辑部 · 最近修订:2026-11-11 · 已按编辑与审核说明检查;内容仅供参考,不构成医疗、法律或投资建议。发现错误可查看纠错方式。

标签: UTF-8 数码开发

抱歉,评论功能暂时关闭!