Unicode 转换器

把文本转义为 JavaScript 的 \uXXXX / \u{HEX} 序列,把混杂的转义序列解码回文本,并以码位为单位逐个查看每个字符:U+ 十六进制、十进制、UTF-8 字节、UTF-16 码元与 JS 转义形式。辅助平面的码位(表情符号)绝不会被拆成代理项两半。
全部处理都在您的浏览器本地完成 — 您的数据不会上传到任何服务器。
转义风格:
编码:文本按 Unicode 码位切分(因此表情符号保持完整),每个码位都写成一个 JavaScript 转义序列。
解码:每一个 \uXXXX、\u{hex} 或 U+hex 序列(大小写均可)都会被转换成对应的字符。相邻的代理项对转义会合并成一个码位。未被转义的文本则原样保留。
码位查看:每个码位占一行,各列以制表符分隔:字符、U+HEX、十进制、UTF-8 字节、UTF-16 码元与 JS 转义。整张表都可以从输出区复制或下载。
在输入框按 Ctrl+Enter 运行当前模式。
选择编码、解码或码位查看并运行。全部处理都留在您的浏览器里。
如何看懂各列:
U+HEX 是码位的十六进制写法;十进制 是同一个数的十进制写法。UTF-8 字节 显示该字符以 UTF-8 书写时占用的一到四个字节(例如 中 = E4 B8 AD)。UTF-16 显示该字符在 JavaScript 字符串内部占用的一到两个 16 位码元(U+FFFF 以上的表情符号需要两个码元,也就是一对“代理项”:例如 U+1F600 = D83D DE00)。JS 转义 是该字符在源代码中推荐的书写形式。
“示例”按钮会载入什么:
它载入的是与当前所处模式相配的例子,而不是固定不变的一段文本,因为一段文本没法同时满足三种模式的需要。编码与码位查看都以普通字符为输入,所以它们拿到的是 Hello 中文! 🎉 — 包含 ASCII、中日韩文字、一个全角标点和一个表情符号。解码接收的是转义序列,而一句普通的话里一个转义都没有:那样只会原样回显一遍,这个模式就没什么可展示的了,所以解码模式拿到的是 Say \u4e2d\u6587 \u{1F600} U+0041 \uD83C\uDF89 OK,里面包含了解码器支持的每一种形式(一对小写的 \uXXXX、一个带花括号的 \u{HEX}、一个 U+hex 形式、一对相邻的代理项,以及几个并不是转义的单词)。输入框下方的那行文字会说明应当留意的结果;在编码模式下,它还会随转义风格与 ASCII 复选框变化,因此再按一次“示例”就能看到另外三种风格。
什么是 Unicode?

Unicode 是一份统一的目录,为每一种书写系统的每一个字符都分配一个编号,也就是它的码位,范围从 U+0000 到 U+10FFFF — 共计 1,114,112 个可用位置,划分成 17 个平面,每个平面 65,536 个。其中第一个平面是基本多文种平面(BMP),容纳了大多数现存语言的字符;而大多数表情符号和不少历史文字则位于更高的(“辅助平面”/astral)平面上。

UTF-8、UTF-16 与 UTF-32 并不是互相竞争的字符集,而是把那些编号序列化成字节的三种方式 — 码位查看模式会对同一个字符同时展示这三种,旁边还列出 JavaScript 的转义写法。

Unicode 负责为字符命名与编号;UTF-8/UTF-16/UTF-32 以及 \uXXXX 转义,不过是同一个数字的不同书写形式。