Unicode 解码器

在 Unicode 转义序列和可读文本之间转换。所有处理在浏览器中完成。

编码与解码 字符信息 客户端处理
结果将在此显示...

如何使用 Unicode 解码器

1

选择模式

选择编码或解码模式。

2

输入内容

输入文本或 Unicode 转义序列。

3

转换

点击转换按钮查看结果。

什么是 Unicode 转义?

Unicode 转义是一种使用 ASCII 字符表示 Unicode 码位的方式。常见的格式包括 JavaScript 的 \uXXXX、Python 的 \uXXXX 和 HTML 的 &#XXXX;。

编码格式

JavaScript编码

用于JSON和JavaScript字符串

HTML实体 (&#XXXX;)

用于HTML中表示特殊字符

CSS转义 (\XXXXXX)

用于CSS内容和标识符

修复乱码(Mojibake Repair)

乱码(mojibake)的成因是一种字符编码的字节被另一种编码解读。最常见的情况:UTF-8 字节被按 Windows-1252 或 Latin-1 解读,"café" 变成 "café"、"张三" 变成 "å¼ ä¸‰"。切换到上方的"修复乱码"模式,粘贴乱码文本,解码器会把每个字符当作原始字节重新按 UTF-8 解码,还原出正确文字。

常见乱码示例

乱码 修复后 原因
café café UTF-8 → Latin-1
å¼ ä¸‰ 张三 UTF-8 → Latin-1
“hi†“hi” UTF-8 → double-encoded
ü ö ñ ü ö ñ UTF-8 → Windows-1252
�� � � 字节已丢失(U+FFFD)

要在自己的应用中预防乱码,请始终显式声明编码:HTML 使用 <meta charset="UTF-8">,HTTP 响应头设置 Content-Type: text/html; charset=utf-8,并在数据库和连接中统一使用 UTF-8。

UTF-8、UTF-16、UTF-32 对比

UTF-8 UTF-16 UTF-32
编码单元 8 bit 16 bit 32 bit
A (U+0041) 41 00 41 00 00 00 41
é (U+00E9) C3 A9 00 E9 00 00 00 E9
中 (U+4E2D) E4 B8 AD 4E 2D 00 00 4E 2D
🎉 (U+1F389) F0 9F 8E 89 D8 3C DF 89 00 01 F3 89
适用场景 Web、JSON、API——兼容 ASCII 且紧凑 Java、JavaScript、C# 的内存文本 需直接访问码点,实际少见

常用 Unicode 码点速查

高频查询字符速查表:标点符号、货币符号、重音字母和数学符号,附 U+XXXX 码点。

标点与符号

“U+201C ”U+201D ‘U+2018 ’U+2019
–U+2013 —U+2014 …U+2026  U+A0
©U+A9 ®U+AE ™U+2122 °U+B0

货币符号

€U+20AC £U+A3 ¥U+A5 ₹U+20B9
¢U+A2 ₽U+20BD ₩U+20A9 ฿U+E3F

重音字母

éU+E9 èU+E8 êU+EA üU+FC
öU+F6 ñU+F1 åU+E5 øU+F8
çU+E7 ßU+DF ąU+105 žU+17E

数学与箭头

±U+B1 ×U+D7 ÷U+F7 ≈U+2248
≠U+2260 ≤U+2264 ≥U+2265 →U+2192
∞U+221E ∑U+2211 √U+221A µU+B5

常见问题

支持哪些 Unicode 范围?

支持完整的 Unicode 范围,包括基本多文种平面(BMP)和补充平面。

\uXXXX 和 \u{XXXX} 有什么区别?

\uXXXX 是 4 位十六进制,只能表示 BMP 字符。\u{XXXX}(ES6+)支持任意位数,可表示所有 Unicode 字符。

为什么有些字符显示为方框?

某些 Unicode 字符(如 emoji 或罕见汉字)可能不在系统字体中,导致显示为方框。

为什么文本里出现 "é"、"�" 这样的字符,怎么修复?

这是乱码(mojibake)的典型特征:UTF-8 字节被按 Windows-1252/Latin-1 解读。"é" 表示 "é" 的两个 UTF-8 字节(0xC3 0xA9)被当作两个独立字符显示。使用"修复乱码"模式即可还原。"�" 是 U+FFFD 替换符,说明字节已经丢失,无法恢复。

UTF-8 和 UTF-16 有什么区别?

UTF-8 用 1-4 个字节编码字符,完全兼容 ASCII,是 Web、JSON 和大多数 API 的默认编码。UTF-16 用 2 或 4 个字节(超出 U+FFFF 时使用代理对),被 JavaScript、Java 和 Windows 内部使用。对大多数 Web 文本而言,UTF-8 更小也更安全。

码点与码元有什么区别?

码点是 Unicode 标准分配给字符的编号(如带锐音符的 é 是 U+00E9);码元是编码使用的存储单元。UTF-8 的码元是 8 位字节——U+00E9 需要占用两个——而 UTF-16 的码元是 16 位,超出 U+FFFF 的字符需要两个码元(代理对)。JavaScript 字符串采用 UTF-16,因此 'hello'.length 为 5,而一个表情符号的 .length 却是 2。

什么是 Unicode 规范化形式?它们何时重要?

同一个可见字符可以对应多个字节序列:é 既可以是单个预组合字符(NFC),也可以是 e 加上组合音符(NFD)。NFC 进行组合,NFD 进行分解,NFKC/NFKD 还会额外折叠兼容字符(全角形式、连字等)。在不先规范化的情况下对用户输入进行比较或哈希,是导致重复账户和查询失败的经典原因——例如 fi 连字与 f+i。

什么是 BOM?它为什么会破坏我的文件?

字节顺序标记(BOM)是写在流开头的 U+FEFF(UTF-8 中为 EF BB BF),用于标明编码。编辑器通常会将其隐藏,但在下游它会变成一个不可见的起始字符:CSV 表头多出一个幽灵键名,JSON 解析因这个多余标记而失败,PHP 会话还会在响应头之前输出它。UTF-8 没有字节顺序歧义,并不需要 BOM——保存时请不要添加。

{-- * External Resources Component(#18 Phase 3b 内容佐证工程) * 工具页「权威引用」区块:RFC / W3C / WHATWG / ECMA / IANA / 官方规范站 / Wikipedia。 * * - 接受 :slug 属性 → 经 config/tool-sources.php 家族矩阵渲染该工具的权威引用 * - slug 未命中映射时不渲染(无权威来源的工具静默跳过) * - 链接 title 保持英文(引用源专名);description 经 * common.resources.descriptions.{key} 本地化,lang 未命中回退英文(线上不裸奔) * - 链接保持 dofollow(rel="noopener noreferrer") * * @param string|null $slug --}}