Unicode 解码器
在 Unicode 转义序列和可读文本之间转换。所有处理在浏览器中完成。
结果将在此显示...
字符信息
| 字符 | 码点 | UTF-8字节 | HTML实体 | CSS转义 | JS转义 |
|---|
如何使用 Unicode 解码器
选择模式
选择编码或解码模式。
输入内容
输入文本或 Unicode 转义序列。
转换
点击转换按钮查看结果。
什么是 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 范围,包括基本多文种平面(BMP)和补充平面。
\uXXXX 是 4 位十六进制,只能表示 BMP 字符。\u{XXXX}(ES6+)支持任意位数,可表示所有 Unicode 字符。
某些 Unicode 字符(如 emoji 或罕见汉字)可能不在系统字体中,导致显示为方框。
这是乱码(mojibake)的典型特征:UTF-8 字节被按 Windows-1252/Latin-1 解读。"é" 表示 "é" 的两个 UTF-8 字节(0xC3 0xA9)被当作两个独立字符显示。使用"修复乱码"模式即可还原。"�" 是 U+FFFD 替换符,说明字节已经丢失,无法恢复。
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。
同一个可见字符可以对应多个字节序列:é 既可以是单个预组合字符(NFC),也可以是 e 加上组合音符(NFD)。NFC 进行组合,NFD 进行分解,NFKC/NFKD 还会额外折叠兼容字符(全角形式、连字等)。在不先规范化的情况下对用户输入进行比较或哈希,是导致重复账户和查询失败的经典原因——例如 fi 连字与 f+i。
字节顺序标记(BOM)是写在流开头的 U+FEFF(UTF-8 中为 EF BB BF),用于标明编码。编辑器通常会将其隐藏,但在下游它会变成一个不可见的起始字符:CSV 表头多出一个幽灵键名,JSON 解析因这个多余标记而失败,PHP 会话还会在响应头之前输出它。UTF-8 没有字节顺序歧义,并不需要 BOM——保存时请不要添加。
相关工具
权威参考资料
本工具所依据的一手资料 - 官方标准与规范,而非二手摘要。