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%AD | URL、查询参数 |
| 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 的文本时,务必用同一工具双向验证一遍。
怎么用
- 在输入框粘贴文本,点转换生成
\uXXXX序列。 - 反向操作时粘贴转义序列,点另一个按钮还原成可读文本。
- 用交换按钮把输出搬回输入,便于连续处理。
工具同时支持大小写十六进制输出(\u4E2D 与 \u4e2d),某些语言和工具链对大小写敏感。整个转换在浏览器里完成,不发送数据。
常见问题
转义序列有什么用?
Java properties、部分 JSON 配置、JS 字符串里常用 \uXXXX 表示非 ASCII 字符,避免编码问题。