Skip to content

Unicode 编码转换器

Unicode 解码与编码:unicode 转中文、中文转 unicode 双向互转,\u 转义、U+ 码点、utf8 字节粘进去自动识别,一次给出全部写法。还能逐字符看码点与字节、揪出看不见的零宽字符。浏览器本地运行,不上传。

无追踪 浏览器中运行 免费

全部在你的浏览器里运行——输入不会被上传、记录或存储。

0 字符
可读文本
结果会显示在这里
规范化
一次给出全部写法
JavaScript / Java / JSON uXXXX
ES6 u{XXXXX}
Python uXXXX / UXXXXXXXX
Go uXXXX / UXXXXXXXX
Rust u{XXXXX}
码点 U+XXXX
HTML 十进制 &#NNNNN;
HTML 十六进制 &#xXXXX;
URL 编码 %XX
CSS XXXXXX
UTF-8 字节 hex
UTF-16 码元 hex
UTF-32 hex
八进制字节 NNN
十进制码点 NNNNN
逐字符拆解
字符 码点 UTF-8 UTF-16 脚本 类别 名称
结果会显示在这里

速查表

字符 码点 JavaScript / Java / JSON UTF-8 字节 URL 编码 HTML 十进制
中文 U+4E2D U+6587 \u4E2D\u6587 E4 B8 AD E6 96 87 %E4%B8%AD%E6%96%87 中文
😀 U+1F600 \uD83D\uDE00 F0 9F 98 80 %F0%9F%98%80 😀
A U+0041 A 41 A A
U+3000 U+3000 \u3000 E3 80 80 %E3%80%80  
速查表里的每一个转换结果,发布前都由两套独立实现交叉核对过。 — Go Tools 工程团队 · 2026年8月27日

所有行为都在 Node、Python、Java、Go 与真实浏览器引擎上实测过,不是照文档推断的。

什么是 Unicode 转义?

Unicode 转义是用纯 ASCII 把一个字符写出来,好让它能穿过那些搬不动原字符的系统。同一个字符在几乎每种语言里的转义写法都不一样:JavaScript 和 JSON 按 UTF-16 码元写四位十六进制,ES6 和 Rust 用大括号装整个码点,Python 和 Go 另有八位的宽写法,CSS 只用一个反斜杠开头,HTML 则有自己的数字引用和命名实体。它们描述的是同一个码点——这正是同一段文字会以六七种面貌出现在你面前的原因。

中文
  U+4E2D U+6587         code point
  \u4E2D\u6587          JavaScript / Java / JSON
  \u{4E2D}\u{6587}      ES6 / Rust
  E4 B8 AD E6 96 87     UTF-8
  %E4%B8%AD%E6%96%87    URL
  中文      HTML

这个转换器能做什么

自动判断是哪种写法

转义、大括号、宽转义、码点、实体、百分号编码、字节串,粘进去就认,不用切模式。

混合内容不会被弄坏

只有编码部分会变。JSON 标点、Windows 路径、已经转义过的反斜杠都原样保留。

一次给出全部写法

一趟粘贴产出整张对照表,不必为了从一种语言换到另一种而转两次。

按语言给对的形式

BMP 外字符对 Python 与 Go 输出宽转义——那两个语言拿到代理对会直接出错。

拆到字符这一层

每个字符的码点、UTF-8 与 UTF-16 字节、脚本与类别;有正式名称的还会给出名称。

把不可见字符显形

BOM、零宽连接符、不换行空格都会显示成可见的替身。

示例

整行日志粘进去,只有转义部分会变

{"msg":"\u4e2d\u6587 failed","code":500}
{"msg":"中文 failed","code":500}

引号、键名、数字都原样保留,所以可以整行粘贴,不必先手工把转义串挑出来。

一次粘贴里混着四种写法

U+4E2D  \u{1F600}  中  \ud83d\ude00
中  😀  中  😀

码点写法、ES6 大括号、HTML 实体、代理对,一趟全部解出来,事先不需要选模式也不需要配置。

一个字,各语言各自的写法

\u4E2D        JavaScript / Java / JSON
\u{4E2D}      ES6 / Rust
U+4E2D        code point
E4 B8 AD      UTF-8
\344\270\255  octal

同一个字按每种语言期望的形式列出。注意 Python 与 Go 对 BMP 外字符必须用宽转义——写成代理对的话 Go 直接编译不过,Python 会抛 UnicodeEncodeError。

使用方法

  1. 1

    粘贴

    转义串、码点、实体、编码字节或纯文本都行,不用先告诉它是哪一种。

  2. 2

    看结果

    可读文本立即出现,同时标出识别到了哪几种写法。

  3. 3

    复制你要的那种

    结果下方列出全部写法,每一行都有自己的复制按钮。

  4. 4

    有疑点就往下拆

    展开逐字符表看码点、字节、脚本与名称,打开「显示不可见字符」把藏起来的字符揪出来。

值得知道的几个坑

该用宽写法的地方写成了代理对

在 JSON 里好好的一对代理,到 Python 里变成两个坏掉的半个字符,到 Go 里直接编译不过。U+FFFF 以上的字符请用八位宽写法。

✗ 错误
\ud83d\ude00
✓ 正确
\U0001F600

把 HTML 数字引用当成纯码点解

128 到 159 之间的引用必须按 windows-1252 读。朴素实现会把右单引号变成一个不可见控制字符,那些位置在页面上什么都不显示。

✗ 错误
’  ->  U+0092
✓ 正确
’  ->  U+2019

CSS 短转义后面紧跟十六进制字符

解析器会继续把十六进制位吃进去,转义和后一个字符并成一个错误的码点。补齐到六位即可。

✗ 错误
\4E2Da
✓ 正确
\004E2Da

什么时候会用到

看日志
服务器日志和接口响应经常把非 ASCII 转义掉。整行粘进来就能读,不用先编辑。
在语言之间搬字符串
直接复制目标语言接受的那种写法,不用手工在代理对与宽转义之间换算。
追编码 bug
比较失败或数据库拒收时,逐字符表会把牵涉到的码点与字节摆出来。
清洗粘贴进来的内容
从网页或文档复制的文本常常夹带不可见字符,在它们进生产之前找出来。

技术细节

转义的是码元不是字符
JavaScript、Java 和 JSON 转义的是 UTF-16 码元,所以 U+FFFF 以上的字符需要两个转义。Python 与 Go 另有八位写法,直接装下整个码点。
HTML 数字引用会被重映射
HTML 规范要求 128 到 159 区间的数字引用按 windows-1252 读而不是按码点读,所以 146 是右单引号而不是一个不可见控制字符。旧 CMS 与 Word 导出的中文数据里这类引用成片出现。
CSS 转义需要补位
CSS 转义最多吃六位十六进制,短写法后面紧跟十六进制字符就会并成一个错误的码点。补齐到六位可以消除歧义,后面跟一个空格则会被当作终止符吃掉。
孤立代理在各处的下场都不一样
JSON 序列化会保留它,TextEncoder 会静默替换掉,百分号编码会直接抛错,Java 写成一个问号,Python 则抛异常。

最佳实践

比较之前先规范化
比较或去重之前把两边折叠到同一规范化形式,姓名和标识符尤其要注意。
Python 与 Go 用宽写法
代理对在 JSON 里合法,在这两个语言里会坏掉。目标是 Python 或 Go 源码时,U+FFFF 以上一律用八位写法。
早一点检查不可见字符
在输入边界就校验粘贴进来的内容,别等到后面排查不相等时才发现。
留着原始值
一旦出现替换字符,解码就不再是无损可逆的。确认无误之前把原始值留着。

常见问题

\u4e2d\u6587 是什么意思?怎么转成中文?
每个 \uXXXX 是一个 UTF-16 码元的十六进制写法。\u4e2d 是 U+4E2D,\u6587 是 U+6587,合起来就是「中文」两个字。把整段粘到上面的输入框即可,周围的 JSON 或日志文本会原样保留不受影响。
反斜杠被吞掉了只剩 u4e2d,还能转吗?
能。终端和日志管道经常把反斜杠吃掉。连写的 u4e2du6587 会被识别并解码,而普通单词里恰好含有 u 的情况不会被误伤。这是多数在线工具直接原样吐回的一种输入。
为什么一个 emoji 会写成两个 \u 转义?
U+FFFF 以上的字符装不进一个 UTF-16 码元,所以 JavaScript、Java 和 JSON 用一对代理来写。一个笑脸是 1 个码点、2 个 UTF-16 码元、4 个 UTF-8 字节,这三个数在逐字符表里都能看到。
中文转 unicode 怎么做?
直接输入或粘贴中文,看结果下方的对照表。所有写法一次全部产出,需要哪个语言的就复制哪个,不用为了换一种格式再转一遍。
两个字符串看起来一模一样,程序却说不相等?
多半是规范化形式不同。带音标的 é 可以是一个码点 U+00E9,也可以是 U+0065 加组合符 U+0301 两个码点,渲染完全一样但并不相等。点 NFC 按钮把两边折叠到同一形式即可。注意规范化对中日韩同样不是空操作——兼容汉字 U+F900 在普通 NFC 下就会变成 U+8C48,韩国人名用字大量落在这一区。
字符串里混进了看不见的东西导致程序报错,怎么找出来?
打开「显示不可见字符」。BOM、零宽空格、不换行空格、变体选择符都会显示成可见的替身,逐字符表还会给出它们各自的名称与字节。从网页或文档里复制粘贴时最容易带进这些字符。
我粘进去的数据会被上传吗?
不会。转换全部在你的浏览器里完成,没有任何网络请求,不上传、不记录、不存储,所以粘生产日志是安全的。