悦省yueser.com

← 全部指南

Unicode 转义解码指南:把 \u4e2d 读回「中」

只认 \u 加四位十六进制,其他转义一律当普通文字。搞清楚这一点,就不会把「没解出来」误判成工具坏了。

打开工具:Unicode 转义解码

哪里会碰到这种字符串

后端日志为了安全把中文转义后输出、Java 项目里的 messages.properties、前端源码里被工具处理过的字符串、接口返回的错误信息,都可能长成 \u4e2d\u6587 这样。

想确认一段文本到底是不是中文、有没有混入全角空格或零宽字符时,先转义再逐段解码,比直接盯着看可靠。因为不可见字符在转义后会露出码位,一眼就能认出来,也方便贴进工单里说明问题。

识别规则:四位,一层

工具只匹配 \u 后面紧跟的四位十六进制,大小写都行,一次替换一层。\n、\t、\x41、\\ 这些不属于这个形式,会原样保留,不会被解释成换行或制表符,这一点很容易被误解。

emoji 在 UTF-16 里是两个代理项,写成 \ud83d\ude00 时能拼回原字符;但如果只剩一半,解出来就是一个孤立代理项,显示为空白或问号。遇到这种情况,先确认复制时没有截断。

边界:别指望它做解码之外的事

它不处理 ES6 的 \u{1F600} 写法,也不处理 URL 的 %E4%B8%AD 和 Base64,这些各有各的工具。混在一起解,只会得到一半正确的结果,还很难判断错在哪。

转义解码不涉及密钥,任何人都能做,所以别把「内容是转义的」当成保护。它也不还原被错误编码破坏的字节——如果原文在存储时已经被替换成问号,解码回来仍然是问号,任何工具都救不回来。

常见问题

为什么 \n 没有变成换行?

工具只识别 \uXXXX 形式,\n 是另一种转义,不在处理范围内,会原样输出。需要真正换行时,请手工替换或交给对应语言的转义规则处理。

代理对能还原成 emoji 吗?

成对出现时可以:\ud83d\ude00 会拼成一个 emoji。单独一半则无法还原,只会得到空白或问号,说明原文在复制或存储时被截断了。

能解 Base64 或 URL 编码吗?

不能。这个工具只处理 \uXXXX。Base64、URL 编码、HTML 实体各有专门的工具,混着解会得到不完整的结果。

相关工具:Unicode 转义解码