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 字符,可读性最好。
这个工具解决你的问题了吗?
提交后会把工具名、你的输入与当前结果发送到服务器;请勿填写身份证号、手机号等隐私信息。
AI 助手 会结合你当前的输入与结果回答
追问会再次把当前输入与结果发送到服务器;请勿填写隐私信息。
使用步骤
- 选方向:文本 → 转义,或转义 → 文本。
- 文本方向挑一种写法(JS 用 \u、HTML 用 &#x、文档用 U+)。
- 转义方向四种写法可混粘,工具逐个识别还原。
- 查不可见字符时看码点列: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("<") # "<"
常见问题
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(避免编码问题)。注意 你 与 U+4F60 不是代码语法,它们分别用于 HTML 和文档说明。
HTML 实体 你 和 你 有区别吗?
没有实质区别:你 是十进制(20320 的十六进制就是 4F60),你 是十六进制写法,浏览器渲染结果完全一样。历史代码里十进制写法更常见,新写的页面多用十六进制或直接写字符。
生僻字和增补平面字符也能转吗?
能。常用汉字在 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;本工具没有历史记录区块,还原密文或调试接口数据时不会留下痕迹。
延伸阅读
来自本站原创文章,讲清这个工具背后的算法与口径。