Unicode 编码/解码

中文与 \uXXXX 转义序列互转

Unicode 转义的使用场景与转换方法

Unicode 转义是什么

\uXXXX 是一种把字符写成纯 ASCII 的表示法:\u 后面跟 4 位十六进制码点。汉字"中"的码点是 U+4E2D,转义写作 \u4e2d。这样一段本来含非 ASCII 字符的文本就变成了任何 ASCII 环境都能安全传输的字符串。

它的典型用武之地是源码与配置文件:Java 的 .properties 文件历史上按 ISO-8859-1 读取,中文必须写转义;JSON 规范本身允许直接出现 UTF-8 字符,但有些老工具链仍要求全 ASCII 输出;JavaScript 字符串在某些打包或注入场景下也需要转义以避免编码问题。

它和 URL 编码、HTML 实体不是一回事

方案形式用在
Unicode 转义\u4e2d源码、JSON、Java properties
URL 百分号编码%E4%B8%ADURL、查询参数
HTML 实体中 或 中HTML/XML 内容

注意 URL 编码针对的是 UTF-8 字节(一个汉字通常 3 个 %XX),而 Unicode 转义针对的是 码点(一个汉字一个 \uXXXX)。同一个字在这两套体系下的输出长度和内容都不同。

代理对:码点超过 U+FFFF 之后

\uXXXX 只有 4 位十六进制,最大只能表示 U+FFFF。Emoji 和一部分 CJK 扩展区字符的码点在这个范围之上(比如 😀 是 U+1F600),必须用代理对写成两个转义:\ud83d\ude00。

这是转换时最容易出错的地方:如果解码器按"逐个 4 位还原"处理代理对,会把一个 emoji 拆成两个无效字符,输出成乱码。而反过来,如果文本里本来就有孤立的高位代理字符(数据损坏的常见形态),编码后再解码也无法恢复原样。处理含 emoji 的文本时,务必用同一工具双向验证一遍。

怎么用

  1. 在输入框粘贴文本,点转换生成 \uXXXX 序列。
  2. 反向操作时粘贴转义序列,点另一个按钮还原成可读文本。
  3. 用交换按钮把输出搬回输入,便于连续处理。

工具同时支持大小写十六进制输出(\u4E2D 与 \u4e2d),某些语言和工具链对大小写敏感。整个转换在浏览器里完成,不发送数据。

常见问题

转义序列有什么用?

Java properties、部分 JSON 配置、JS 字符串里常用 \uXXXX 表示非 ASCII 字符,避免编码问题。