跳到正文
BCBinary Code Translator
菜单

Unicode 表示法检查工具

Unicode 转义 / 反转义

把普通文本转换为 Unicode 码点、花括号转义或四位 UTF-16 转义,也可严格解码,并正确校验 surrogate pair,绝不执行输入代码。

解析器只处理当前浏览器中的字符串,不会把输入作为 JavaScript 求值。

转换方向
0 个字符
0 个字符

转换仅在当前浏览器本地执行,输入不会上传。

尚无结果。

Unicode 码点、UTF-16 与转义表示

Unicode 为每个抽象字符分配码点,通常写成 U+ 加十六进制,例如 A 是 U+0041,😀 是 U+1F600。码点不同于 UTF-8 字节,也不总等于 JavaScript 的一个字符串索引。

JavaScript 字符串使用 UTF-16。基本多文种平面内通常是一个 16 位码元,可写为 \u4F60;U+FFFF 以上需要代理对,所以 U+1F600 在四位形式中是 \uD83D\uDE00。现代 \u{1F600} 可直接写标量。

本工具把表示与执行完全分开,只识别 U+ 令牌、\uXXXX 和 \u{…}。它不会调用 eval、Function、脚本元素或把输入当可执行代码。

如何转义与反转义 Unicode

  1. 要检查普通文本时选择编码。
  2. 按用途选择 U+ 文档形式、\u{…} 标量形式或展示 UTF-16 码元的 \uXXXX。
  3. 已有表示法时选择解码,输入 U+ 列表或受支持的转义序列。
  4. 遇到代理项或范围错误时修正源数据,工具不会自动替换。
  5. 得到文本后仍需按 HTML、URL、JSON 等目标上下文继续正确转义。

Unicode 码点与转义示例

同一字符可以表示为标量码点、花括号转义,或一个/两个 UTF-16 四位转义。示例在不执行代码的情况下展示差异。

输入 输出 转换方向 说明
A U+0041 编码 ASCII 码点. 基本拉丁字符只有一个码点和一个 UTF-16 码元。
😀 U+1F600 编码 Emoji 码点. 该 emoji 是基本多文种平面之外的一个 Unicode 标量。
😀 \u{1F600} 编码 花括号转义. ECMAScript 花括号语法可直接写完整标量值。
😀 \uD83D\uDE00 编码 UTF-16 代理对. 四位语法用高代理项和低代理项表示同一个 emoji。
U+4F60 U+597D 你好 解码 解码中文码点. 码点令牌可用空格或逗号分隔。
\u0041\u{1F600} A😀 解码 混合转义形式. 严格解析器可组合受支持形式,但拒绝其他源代码。

受支持语法与 Unicode 标量规则

码点输入必须完全由 U+ 和 1-6 位十六进制组成,以空白或逗号分隔。数值范围是 U+0000 到 U+10FFFF,不能落入 U+D800-U+DFFF 代理区。

转义输入可包含四位 \uXXXX 码元和 1-6 位 \u{…} 标量。高代理项必须紧接低代理项,低代理项不能单独出现。

  • 十六进制输入不区分大小写,输出使用大写便于阅读。
  • 花括号形式直接表示标量并拒绝代理区。
  • 四位形式表示 UTF-16 码元,补充字符需要两个转义。
  • 普通文本中的未配对代理项会被拒绝。
  • 引号、拼接、函数调用等源代码不属于语法。

代理对如何计算与校验

输出码点时按 Unicode 字符迭代,合法高低代理项会组合为一个标量,再格式化为 U+ 或花括号形式。

输出 \uXXXX 时按 UTF-16 码元迭代。补充标量减去 0x10000 后,高 10 位加到 0xD800,低 10 位加到 0xDC00。

解码时,U+ 和花括号值先做标量范围校验;四位码元按顺序扫描,高代理项必须配对。解析器不识别 \x、八进制、模板表达式或 JavaScript 语句。

Unicode 表示法适用场景

当文本外观含糊时,码点能揭示实际序列。它是诊断和文档工具,不是通用安全转义。

项目 说明
调试 emoji 与补充字符 检查系统是否正确保存一个标量,还是拆分、截断或错序代理对。
检查不可见字符 发现不换行空格、零宽字符、控制符和看似普通的分隔符。
编写技术文档 U+ 表示与字体、源编码和具体编程语言无关。
审查 API 转义数据 在不执行代码的前提下查看复制的 Unicode 转义。
比较规范化结果 可区分预组字符与基础字母加组合标记。

Unicode 错误与安全边界

未配对代理项是格式错误的 UTF-16,不同编码器可能替换、拒绝或保留。工具选择拒绝,避免悄悄产生 U+FFFD。

反转义不会让结果自动安全。解码后的 <、%、引号仍可能影响 HTML、URL、JSON 或 SQL,必须按目标上下文编码。

  • U+110000 超过 Unicode 上限。
  • U+D800 不是标量值。
  • 单独的 \uD83D 会被拒绝。
  • \u{XYZ} 含非法十六进制。
  • alert(1) 不会被当作转义,更不会执行。

Unicode 转义与 JSON、HTML、URL 编码

Unicode 转义描述字符或 UTF-16 码元;JSON 还定义引号、反斜杠和完整文档语法。HTML 实体与 URL 百分号编码解决的是各自上下文中的语法问题。

😀 可以是码点 1F600、UTF-16 码元 D83D DE00,或 UTF-8 字节 F0 9F 98 80。不同层次都可能正确。

项目 说明
JSON 转义 需要完整 JSON 解析器;本工具只解析明确 Unicode 表示。
HTML 实体 在 HTML 文本中使用 &amp;、&#x1F600; 等形式。
UTF-8 字节 用于存储和传输,一个码点可能占 1-4 个字节。

Unicode 转义常见问题

U+1F600 与 \uD83D\uDE00 有何区别?

前者是一个 Unicode 标量,后者是 JavaScript UTF-16 中保存它的高低代理码元。

何时使用 \u{...}?

它能直接表示任意标量,补充字符更清晰;\uXXXX 适合检查 UTF-16 或受限格式。

会执行 JavaScript 吗?

不会。工具使用专用语法解析器,不调用 eval、new Function 或脚本注入。

为什么拒绝 U+D800?

它是 UTF-16 高代理码元,不是独立 Unicode 标量,只能在正确代理对中出现。

能发现组合字符吗?

能。码点输出按顺序列出每个标量,可看出预组字符和组合序列不同。

反转义能防注入吗?

不能。结果仍是不可信普通文本,需要按 HTML、URL、JSON、shell 或数据库上下文处理。

相关编码与字符工具

查看全部工具

Cookie 偏好设置

管理你的 Cookie 偏好。必要 Cookie 无法关闭。

必要 Cookie

必要

用于语言选择、隐私选择和网站基础功能,属于必需项。

Cookie: NEXT_LOCALE

分析 Cookie

可选的分析 Cookie 可帮助我们了解访问情况并改进网站。

Cookie: _ga, _gid, _gat, _clck, _clsk

广告 Cookie

可选的广告 Cookie 可能用于展示相关广告并衡量广告效果。

Cookie: __gads, _gcl_au, IDE