🔠 中文 ↔ UTF-8 转换

UTF-8 字节 · 十六进制 · \xXX 转义 · %XX 百分号编码

📝 输入内容
等待输入...
字符: 0 行: 0
📤 处理结果
等待处理...
字符: 0 字节数: -

什么是 UTF-8?

UTF-8(Unicode Transformation Format - 8 bit)是目前互联网使用最广泛的Unicode 变长字符编码。它把每个 Unicode 码点按其数值大小映射为 1~4 个字节:ASCII 字符占 1 字节,带音符的拉丁字母与西里尔文等占 2 字节,绝大多数中文汉字占 3 字节,emoji 等增补平面字符占 4 字节。变长设计兼顾了英文文档的存储效率与全球字符的完整覆盖,HTML、JSON、数据库默认字符集几乎都是 UTF-8。

UTF-8 编码规则与字节数对照

码点范围(十六进制)字节数二进制模板典型字符
U+0000 ~ U+007F1 字节0xxxxxxxA、a、0、空格
U+0080 ~ U+07FF2 字节110xxxxx 10xxxxxx©、é、α
U+0800 ~ U+FFFF3 字节1110xxxx 10xxxxxx 10xxxxxx中、文、菜、刀
U+10000 ~ U+10FFFF4 字节11110xxx 10xxxxxx 10xxxxxx 10xxxxxx😀、🚀 等 emoji

以「中」为例:码点为 U+4E2D(二进制 0100 1110 0010 1101),落入 3 字节区间,填入模板得 11100100 10111000 10101101,即 E4 B8 AD —— 这就是「中」的 UTF-8 编码。

Unicode 与 UTF-8 是一回事吗?

不是。Unicode 是字符集,给每个字符分配唯一编号(码点),如「中」= U+4E2D;UTF-8 是编码方案,规定这个编号如何在存储与传输中落成字节序列。同一码点用 UTF-16 编码是 4E 2D(2 字节),用 GBK 是 D6 D0,用 UTF-8 则是 E4 B8 AD。「乱码」的根源几乎都是用错误的编码方案去解读正确的字节流,例如把 UTF-8 的中文当 GBK 打开就会看到「涓枃」这类天书。

三种输出形式的用途

  • 十六进制字节(E4 B8 AD):查看文件十六进制内容、分析协议报文、调试数据库存储时最直观的形式。
  • \xXX 转义(\xE4\xB8\xAD):C、Python、PHP 等编程语言字符串字面量中的字节转义写法,常用于构造正则或测试数据。
  • %XX 百分号编码(%E4%B8%AD):URL 中传递非 ASCII 字符的标准方式(RFC 3986),浏览器地址栏里看到的「乱码」链接其实就是它。

常见问题

  • 为什么一个汉字是 3 个字节?常用汉字码点位于 U+0800 ~ U+FFFF 区间,按 UTF-8 规则需 3 字节;而英文字母、数字只占 1 字节,这就是同样一篇文档中文版本更大的原因。
  • %E4%B8%AD 和 URL 编码是一回事吗?本质相同:URL 百分号编码就是把字符的 UTF-8 字节逐个加上 % 前缀。需要配合 ? & = 等保留字符处理时请使用站内「URL编码解码」工具。
  • 解不开报错?请检查有效十六进制字符数是否为偶数(每字节 2 个字符);输入中的空格、换行、冒号、逗号及 \x、%、0x 前缀会被自动忽略,大小写混排亦可识别。
  • 支持 emoji 吗?支持。emoji 属于 4 字节区段,会正确编出 8 个十六进制字符,解码时同样还原。

使用说明与小贴士

选择「中文转 UTF-8」粘贴文本,或选择「UTF-8 转中文」粘贴任意形式的 UTF-8 编码串,即实时出结果;点击「⇄ 交换」把结果送回输入框反向验证。输出形式仅影响编码结果的书写样式,解码时一律自动兼容所有形式。所有转换均在浏览器本地完成,不会上传任何数据。