中国本土 本地计算 开箱即用 内置示例 不留痕迹

Unicode 转义在线转换

把汉字、emoji 转成 \u4F60、你、U+4F60 这几种转义写法,也能把转义串还原成文本。写代码时确认「这一串到底是什么字符」、查某个字的 Unicode 码点、看字符串里有没有藏不可见字符都用得上。四种写法可以混着粘,工具会逐个识别。

调试乱码、查 emoji 的码点、确认字符串里有没有藏不可见字符(零宽空格、BOM)——这些都需要在「字符」与「码点」之间来回看。本工具支持四种转义写法互转:\u4F60(JS/JSON)、你(HTML 十六进制)、你(HTML 十进制)、U+4F60(标准码点写法),可以混着粘,逐个识别。

两个容易踩的点:一是 emoji 与生僻字超出基本平面(BMP),一个字符占两个 UTF-16 码元——JS 的 charCodeAt 会把它拆成两半,要用 codePointAt;二是 \u 转义只用于 JS/JSON 字符串,HTML 里写 \u4F60 不会生效,要写 你。默认只转非 ASCII 字符,可读性最好。

使用步骤

  1. 选方向:文本 → 转义,或转义 → 文本。
  2. 文本方向挑一种写法(JS 用 \u、HTML 用 &#x、文档用 U+)。
  3. 转义方向四种写法可混粘,工具逐个识别还原。
  4. 查不可见字符时看码点列:U+200B(零宽空格)、U+FEFF(BOM)是常客。

计算原理与示例

基本用法

选「文本 → 转义」时挑一种写法:\uXXXX 用于 JS / JSON 字符串,&#起步的两种用于 HTML,U+ 是标准里的码点写法。默认只转非 ASCII 字符——ASCII 字母数字与空格原样保留,可读性最好。选「转义 → 文本」则把粘贴进来的转义串还原成真实字符,四种写法混排也能认。

四种写法分别用在哪

\uXXXX 出现在代码里,JSON.stringify 默认也会这样输出,所以排查「接口返回的中文为什么是乱码」时最常用。你(十进制)与 你(十六进制)出现在 HTML 源码里。U+4F60 是 Unicode 标准文档、字库工具与输入法里的写法,长这样:U+4F60 U+597D 就是「你好」。

emoji 为什么要按单码点处理

JavaScript 的字符串用 UTF-16 表示,一个 emoji 占两个码元(一对代理项),直接按 \uXXXX 各转一次会得到 \uD83D\uDE00 这种孤立代理项,写回代码里很容易变成乱码。本工具先按码点解析,再输出 \u{1F600}(JS 的码点语法)或 U+1F600,保证一个字符对应一个转义单元。

口径:转义方向按 Unicode 码点处理(增补平面输出 \u{...},不拆代理对),默认只转非 ASCII,可打印 ASCII 与制表、换行保留;还原方向识别 \uXXXX、\u{XXXXX}、&#十进制;、&#x十六进制;、U+XXXX 五种写法,非法码点(> U+10FFFF)与原样文本保持不变。

代码示例

JavaScript 码点与转义(注意代理对)

const ch = "你";
ch.codePointAt(0).toString(16);          // "4f60"
"\u4F60";                                 // "你"(JS 字符串转义)

// emoji 超出 BMP:length 是 2,要用 codePointAt
[..."😀"].map((c) => c.codePointAt(0).toString(16));  // ["1f600"]
String.fromCodePoint(0x1f600);            // "😀"

Python ord / chr 与 unicode_escape

hex(ord("你"))                    # "0x4f60"
chr(0x4f60)                       # "你"

"你".encode("unicode_escape")     # b"\\u4f60"
b"\\u4f60".decode("unicode_escape")  # "你"

# HTML 实体用 html 模块
import html; html.escape("<")     # "&lt;"

常见问题

U+4F60 和 \u4F60 有什么区别?

指的是同一个码点,只是书写约定不同:U+4F60 是 Unicode 标准里的码点记法(U+ 加十六进制),常见于文档与字库工具;\u4F60 是编程语言字符串里的转义写法(JS、JSON、Java 都用),两者可以互相替换。

为什么一个 emoji 会算两个字符?

因为 JS 字符串按 UTF-16 码元计数:U+FFFF 以上的字符要用两个码元(代理对)表示,所以一个 emoji 的 length 是 2。但它的码点只有一个(U+1F600),本工具按码点处理,转义后就是一个单元,不会拆成孤立代理项。

转义串为什么能直接贴进代码里用?

因为 \uXXXX 与 \u{XXXXX} 都是 JS / JSON 字符串的合法转义语法,粘贴后运行时会被解释成真实字符,源码文件因此可以保持纯 ASCII(避免编码问题)。注意 &#x4F60; 与 U+4F60 不是代码语法,它们分别用于 HTML 和文档说明。

HTML 实体 &#20320; 和 &#x4F60; 有区别吗?

没有实质区别:&#20320; 是十进制(20320 的十六进制就是 4F60),&#x4F60; 是十六进制写法,浏览器渲染结果完全一样。历史代码里十进制写法更常见,新写的页面多用十六进制或直接写字符。

生僻字和增补平面字符也能转吗?

能。常用汉字在 U+4E00~U+9FFF,扩展区(生僻字、部分历史汉字)在 U+20000 以上;这类字符的转义在 JS 里必须写成 \u{...} 形式(如 \u{20BB7}),本工具会自动这样输出,实测读音为「𠮷」的字符换算正确。

字符串里怎么会有看不见的字符?

常见来源有:从网页复制带来的零宽空格(U+200B)、不换行空格(U+00A0)、BOM(U+FEFF)、全角空格(U+3000)。它们肉眼不可见却会影响校验与比对。把可疑字符串转成码点写法,异常字符会立刻暴露出来——这是排查「看起来一样却不相等」最快的方法。

还原时认不出我粘的写法怎么办?

本工具识别 \uXXXX、\u{XXXXX}、&#十进制;、&#x十六进制;、U+XXXX 五种形式(大小写不限),不认识的片断会原样保留,因此「半转义」的混合文本也能直接还原。如果结果里仍带着原样的反斜杠,说明那段写法不在支持范围内,可以对照上面的格式改一下。

这个转换会把我的文本上传吗?

不会。转换在浏览器内完成,输入不经过服务器,也不写入 localStorage;本工具没有历史记录区块,还原密文或调试接口数据时不会留下痕迹。

延伸阅读

来自本站原创文章,讲清这个工具背后的算法与口径。