无需登录 数据私有 本地保存

Emoji与JS转义互转 - \u{1F600}形式

16
0
0
0

Emoji ⇄ JS 转义序列

支持 \u{1F600} 大括号形式 & \uXXXX 四位形式 · 实时互转 · 一键复制

Emoji / 文本 JS 转义
等待输入
JS 转义序列 Emoji
等待输入

常见问题 & 知识

这是 ES6 (ECMAScript 2015) 引入的 Unicode 码点转义语法。使用 \u{...} 大括号包裹十六进制码点,可以表示 任何 Unicode 字符(U+0000 到 U+10FFFF)。相比传统的 \uXXXX(仅4位,只能表示BMP内字符),\u{...} 可以表示补充平面(SMP/SIP)中的字符,包括绝大多数 Emoji。例如 \u{1F600} 表示 😀(U+1F600)。

  • \uXXXX:固定4位十六进制,只能表示 U+0000 到 U+FFFF(基本多文种平面 BMP)的字符。例如 \u00E9 → é。
  • \u{XXXXX}:大括号内1-6位十六进制,可表示 全部 Unicode 码点(最高 U+10FFFF)。例如 \u{1F680} → 🚀。这是 ES6 新增语法。
  • 本工具两种格式均支持解析,对于码点 > U+FFFF 的字符(如Emoji)输出使用 \u{...} 格式。

大多数 Emoji 位于 Unicode 的补充平面(码点 > U+FFFF),例如 😀 的码点是 U+1F600。在 JavaScript 内部,这些字符使用代理对(Surrogate Pair)——两个 UTF-16 编码单元来表示。使用 \u{...} 转义可以直接用码点表示,避免代理对带来的困惑。此外,一些 Emoji 由多个码点 + ZWJ(零宽连接符)组合而成(如 👨‍👩‍👧‍👦),转义后可以清晰看到其构成。

直接在字符串字面量中使用即可:
const emoji = '\u{1F600}'; // → 😀
const str = 'Hello \u{1F389} World'; // → Hello 🎉 World

动态转换可使用:
String.fromCodePoint(0x1F600) // → 😀
'😀'.codePointAt(0).toString(16) // → '1f600'

JavaScript 使用 UTF-16 编码字符串。对于码点 ≤ U+FFFF 的字符,用一个 16 位编码单元表示;对于码点 > U+FFFF 的字符(如大部分 Emoji),需要两个 16 位编码单元(高位代理 + 低位代理)组成一个"代理对"。

例如 😀 (U+1F600) 的代理对为 \uD83D\uDE00。使用 \u{1F600} 语法可以直接用码点表示,更加直观。使用 [...str]for...of 可以正确按码点遍历字符串,避免拆分代理对。

Emoji码点JS 转义名称
😀U+1F600\u{1F600}Grinning Face
😂U+1F602\u{1F602}Face with Tears of Joy
❤️U+2764 + U+FE0F\u{2764}\u{FE0F}Red Heart
🎉U+1F389\u{1F389}Party Popper
🚀U+1F680\u{1F680}Rocket
🔥U+1F525\u{1F525}Fire
👍U+1F44D\u{1F44D}Thumbs Up
U+2728\u{2728}Sparkles