Unicode 转换

Unicode 转换是免费在线工具:把中文、emoji、符号一键转成 \u4e2d 这类转义码,也能把 \u4e2d、中、U+4E2D、%u4E2D 等 10 种写法混排的文本一次还原成中文,emoji 代理对自动合并。可只转非 ASCII、只转汉字或只揪出零宽空格这类不可见字符,并查看码点与 UTF-8 字节。解不开的片段原样保留,绝不用问号糊过去。浏览器本地计算、文本不上传。

拖入 .txt / .json / .log 文件,点击选择
文本不上传 · 浏览器本地转换 · 也可直接粘贴 · 单文件 ≤ 10 MB
一键预设
转换方向

两个方向各自记住自己的输入框内容,来回切不丢文本。

自定义(编码)

写的是 UTF-16 码元,只能表示到 U+FFFF;emoji 要写成两段代理对。最通用,默认就是它。 出处:JavaScript / Java / JSON / C# / Go;😀 在这种写法下是 \ud83d\ude00

只转非 ASCII:只转 U+0080 及以上:中文、日韩文、emoji、全角标点、零宽字符。适合把中文塞进只认 ASCII 的配置、源码或 JSON,结构与英文原样可读。

🔒 全部转换在你的浏览器本地用 JS 完成,文本不上传任何服务器,也不写入本地存储(只记住方向、 写法、范围这些参数偏好),关闭页面即清除。本工具只在「字符」与「它的转义写法」之间互转: 不改宽度、不改大小写、不删空白、不动换行符、不做 NFC/NFD 归一,解不开的片段一律原样保留。

如何使用Unicode 转换

1

Unicode 转换怎么用:把要处理的文本粘进上方输入框,或直接拖入 .txt / .json / .log 文件(文本只在你的浏览器里处理、不上传)。不确定怎么开始就点「填入示例」先看效果。

2

选方向和写法:默认就是「JSON 中文转义」预设,即文字转 \uXXXX、只转非 ASCII,英文与 JSON 结构原样可读。要还原就点「一键还原中文」,10 种写法混排也能一次认全;也可以自己在下拉里挑写法(\u{}、&#x、U+、%u…)和范围(全部字符 / 只转汉字 / 只转不可见字符)。

3

拿结果:统计条会直接告诉你转了多少个字符、有没有解不开的片段;结果可一键复制或下载 .txt(可选带 BOM,Windows 记事本打开不乱码)。「字符档案」里能顺手查每个字符的码点、UTF-8 字节与 10 种写法,可整表复制成 TSV。

关于Unicode 转换的常见问题

Unicode 转换会上传我粘贴的文字吗?
不会,Unicode 在线转换不上传任何内容。所有转换都在你的浏览器里用 JavaScript 完成,粘贴的文本、上传的文件内容与转换结果都不会发送到任何服务器,关闭页面即清除。本页只把方向、写法、范围这几项参数偏好写进本机 localStorage,原文与结果一个字都不落盘,也不会把文本同步到网址里。想自证很简单:打开 F12 的网络面板再转一次,计算过程零请求,断开网络照样出结果(页面本身会加载一个访问统计脚本,它不读取也不上报你粘贴的内容)。
\u4e2d 是什么意思?怎么转成中文?
\u4e2d 是一个 Unicode 转义序列:反斜杠 u 后面的 4e2d 是十六进制写的码点,对应的字符正是汉字「中」。它常出现在 JSON、Java 源码、日志和接口返回里,因为这些地方只想存 ASCII 字符。要还原,把整段文本粘进本页、点「一键还原中文」即可,\u4e2d、\u{1f600}、文、U+4E00、%u5b57 混在一起也能同时认出来,其余字符原样不动。
Python 的中文变成 \u5b57 了怎么还原?
那是 json.dumps 的默认参数 ensure_ascii=True 造成的:它把所有非 ASCII 字符都写成 \uXXXX 转义,JSON 本身没有损坏,中文也没有丢,只是换了种写法。要在代码里避免,把参数改成 ensure_ascii=False 即可;要还原手上已有的文件或日志,把内容粘进本页选「一键还原中文」,一次全部转回来。反过来,如果你需要生成这种「纯 ASCII 的 JSON」交给只认 ASCII 的老系统,用本页默认的「JSON 中文转义」预设就是同一个口径。
emoji 转 \u 编码为什么变成两段代理对?
因为 \uXXXX 写的是 UTF-16 码元,只能表示到 U+FFFF。😀 的码点是 U+1F600,超出了这个范围,就必须拆成「代理对」两段码元来写,页面上方的对照表里那一行给的就是它,这是规范行为不是工具出错。想要一段的写法,选 \u{1f600}(ES6 / Rust / Swift)或 \U0001f600(Python / C),它们写的是码点而不是码元。本页解码时会自动把两段代理合并回一个 emoji;如果只出现了半个(比如日志被从代理对中间截断),本页会原样保留并在问题列表里点名,绝不会悄悄变成问号。
U+4E2D 和 \u4e2d、中 有什么区别?
三者指的是同一个字符「中」,区别只在写法出处:U+4E2D 是 Unicode 标准与文档里的记法,\u4e2d 是 JS / Java / JSON 源码里的转义,中 是 HTML / XML 的数值字符引用。选哪种取决于你要把它贴到哪里——贴进源码用 \u,贴进网页用 &#x,写文档提 issue 用 U+。本页正文的对照表把 10 种写法并排列出,同一个「中」和同一个 😀 各给一列,照着挑就行。
%u4E2D 和 %E4%B8%AD 有什么区别?
长得像,但完全是两回事。%u4E2D 是旧式 JavaScript escape() 留下的写法,百分号后面跟的是 UTF-16 码元;%E4%B8%AD 是 URL 百分号编码,跟的是 UTF-8 字节,一个汉字三段。本页只处理前者,遇到后者会明确提示并指向「URL 编码/解码」工具,而不会给你一个看起来解开了其实全错的结果——把 %E4%B8%AD 按码元硬解会得到 中 这种乱码,比直接报错危险得多。
怎么查一个汉字的 Unicode 码点和字节?
把字符粘进输入框,下方的「字符档案」会逐字给出码点(如 U+4E2D)、十进制(20013)、UTF-8 字节(E4 B8 AD)、UTF-16 码元(4E2D)、所在平面与常用区块名,以及这个字符在 10 种记法下分别怎么写。整表可以复制成 TSV 直接贴进 Excel。档案按首次出现顺序去重,默认只对前 200 个不重复字符建档,所以粘一整篇文章也不会卡。
字符串看起来一样却不相等,怎么用 Unicode 查?
多半是中间藏了看不见的字符。用「揪出不可见字符」预设:零宽空格、零宽连接符、不换行空格、方向控制符、变体选择符会被转成 \u200b、\u00a0 这样的写法显形出来,一眼就能看到多出来的是什么、在第几行第几列,而中文和英文一个字都不会动。本页只让它们现形、不替你删;要清掉请用「富文本清理」。这也是从网页或 PDF 复制来的字符串在 Excel 里查不到、在代码里匹配不上的头号原因。
Unicode 转换和 JSON 转义、URL 编码的区别?
层次不同,同一段中文在四个工具里会得到四种完全不同的结果。本页处理的是「字符与它的码点写法」;JSON 格式化里的转义处理的是引号、反斜杠与控制字符的语法安全,它不会动中文;URL 编码把 UTF-8 字节写成 %E4%B8%AD;Base64 把任意字节重编成 64 个 ASCII 字符。四个工具各自独立、可以按需组合,本页只管码点这一层,绝不越界替你做另外三件事。
Unicode 转换能只转中文、保留英文吗?
可以,这正是默认行为。「只转非 ASCII」会保留全部英文字母、数字和半角标点,只把中文、日韩文、emoji、全角标点转成转义码,所以 JSON 的结构、键名和缩进依然清清楚楚。想更精确还能选「只转汉字」(标点和 emoji 保持可读)或「只转不可见字符」;真要逐字转就选「全部字符」,此时真实换行默认仍然保留,可以手动关掉换成 \u000a。
Unicode 在线转换有字数限制吗?免费吗?
完全免费、无需注册、不限次数。建议单次 10 MB 或 500 万字以内;超过 20 万字会自动切换成「点按钮 + 进度条 + 可随时取消」的分片计算模式,避免长文本把页面卡住;真的超过 500 万字上限会明确告诉你已处理到哪里,不会静默丢内容。结果超过 5000 行时文本框只渲染前 5000 行做预览,但复制和下载拿到的始终是完整数据。
Unicode 解不开的片段会变成问号吗?
不会,这是本工具的一条硬规矩。孤立的半个代理(emoji 转义被从中间截断只剩前一半)、超出 U+10FFFF 的码点、缺结尾分号的实体、& 这类命名实体、%XX 形式的 URL 编码、\q 这类未知转义,一律原样保留,并在「解不开的片段」列表里给出行号、列号、原文与原因。绝不会用 � 替换字符把错误糊过去——那会让你拿着一段悄悄坏掉的文本走,比报错糟得多。

Unicode 转换:同一个字的 10 种写法对照表

这十种写法覆盖的就是大家常说的那几件事:中文转 \u 编码与 \u 转中文(\u4e2d 与「中」互换)、u+ 编码转换(U+4E2D 这种 标准写法)、字符转 Unicode 码,以及反过来的 Unicode 码点查询。换个方向就是换一栏, 不用换页。

「Unicode 转换」之所以让人困惑,是因为同一个字符在不同语言里有完全不同的写法,而它们 指的其实是同一个码点。下面这张表用汉字「中」(码点 U+4E2D)和 emoji「😀」(码点 U+1F600)各走一遍 10 种记法——注意看 😀 那一列,有的记法一段就够,有的必须写成两段。

10 种记法对照:同一个「中」与同一个「😀」分别长什么样
写法中(U+4E2D)😀(U+1F600)典型出处
\uXXXX\u4e2d\ud83d\ude00JavaScript / Java / JSON / C# / Go
\u{X…}\u{4e2d}\u{1f600}ES6+ / Rust / Swift / PHP7+
\uXXXX + \U00XXXXXX\u4e2d\U0001f600Python / C / C++
&#十进制;中😀HTML / XML
&#x十六进制;中😀HTML / XML
\十六进制 + 一个空格\4e2d \1f600 CSS content
%uXXXX%u4E2D%uD83D%uDE00escape() / ASP / VBScript
U+XXXXU+4E2DU+1F600Unicode 标准 / 文档 / Wiki
十进制数字20013128512数据库 / 日志
0x十六进制0x4e2d0x1f600C / 调试器

表里两处最容易被当成 bug 的地方,其实都是规范要求的:一是 CSS 那行末尾多出来的空格, 它是转义序列的终止符,删掉之后后面紧跟的十六进制字符会被吞进转义里;二是 %uXXXX 与 U+XXXX 恒用大写,前者是浏览器 escape() 的原样输出,后者是 Unicode 标准的写法,所以 本页的「十六进制用大写」开关对这两种记法不起作用。

码点、UTF-8、UTF-16 到底是什么关系

这一节顺带回答三个常被单独搜的问题:UTF-8 字节查询(一个汉字在 UTF-8 下是哪三个字节)、 emoji unicode 码为什么要两个 UTF-16 码元,以及什么叫孤立代理对——一个高位代理没等到 它的低位搭档,字符串就断在半路。英文资料里这类工具叫 utf16 code unit converter。

这一段能解释本页 90% 的困惑。码点是字符的身份证号:「中」就是 U+4E2D,全世界只有一个,和存储方式无关。UTF-8 是把码点存成字节的一种方案:「中」在 UTF-8 下是 E4 B8 AD 三个字节。UTF-16 是另一种方案:「中」 在 UTF-16 下是 4E2D 一个码元。三者说的是同一个字符的三种身份。

两个字符的三种身份:码点、UTF-8 字节与 UTF-16 码元
字符码点十进制UTF-8 字节UTF-16 码元\uXXXX 写法
U+4E2D20013E4 B8 AD4E2D\u4e2d
U+658725991E6 96 876587\u6587
AU+004165410041\u0041
😀U+1F600128512F0 9F 98 80D83D DE00\ud83d\ude00

关键在最后一行:\uXXXX 写的是 UTF-16 码元,不是码点。码元只有 16 位, 最大表示到 U+FFFF,而 😀 的码点是 U+1F600,装不下,于是 UTF-16 用两个特殊范围的码元 (D800–DBFF 与 DC00–DFFF,称作「代理对」)合起来表示它——这就是一个 emoji 要写两段\ud83d\ude00 的全部原因。反过来,😀、U+1F600、\u{1f600} 写的都是码点, 所以只要一段。理解了这一条,你就能自己判断某个转义写法该有几段。

这套拆法可以自己验算,四步就够(以 😀、码点 U+1F600 为例):第一步减去 0x10000,得 0xF600,也就是十进制的 62976;第二步取它的高 10 位,62976 ÷ 1024 向下取整是 61,加上 起点 0xD800 得到 0xD83D;第三步取低 10 位,62976 − 61 × 1024 = 512, 加上起点 0xDC00 得到 0xDE00;第四步把两段拼起来,正是上表最后一行的\ud83d\ude00。凡是码点在 U+10000 以上的字符都走这套算术——emoji、𠮷(U+20BB7)这类扩展区 生僻字都在其内,所以它们的 \uXXXX 写法必然是两段;而「中」落在 U+FFFF 以内,永远只有 一段。

Unicode 转换为什么我的结果不对:七种常见情况

最高频的一类是 JSON:json 里的 \u 怎么还原、json 中文 unicode 还原、 json 中文转 unicode,本质都是同一件事。Python json 中文变成 unicode 是因为json.dumps 默认 ensure_ascii=True,把 ensure_ascii 中文这一项设成 False 就不再转义;Java unicode 转中文、 js unicode 编码解码遇到的也是同一层转义,粘进本页选「解码」即可。

Unicode 转换结果不对时,先按这七条对号入座
你看到的原因与做法
转出来是 \ud83d\ude00 两段emoji 超出了 BMP,\uXXXX 只能表示 16 位。想要一段就换 \u{1f600}(ES6)或 \U0001f600(Python)。
%E4%B8%AD 解不开那是 URL 百分号编码(UTF-8 字节),不是 %u4E2D(UTF-16 码元)。本页不处理,请用「URL 编码/解码」,本页会直接给出跳转。
&、  没变本页只处理 中 与 中 这类数值字符引用,命名实体不在范围内,会原样保留并计数提示。
\\u4e2d 没被还原成「中」这是对的。前面的 \\ 是一个字面反斜杠,后面的 u4e2d 只是普通字母,把它当转义解开会丢掉那个反斜杠。
CSS 结果末尾多了个空格规范要求的终止符,删了会把后面的字符吞进转义序列。这个空格必须留着。
中文没被转,只转了几个奇怪的字符范围选成了「只转不可见字符」或「只转汉字」。切回「只转非 ASCII」或「全部字符」即可。
两个字符串一模一样却不相等用「揪出不可见字符」预设,零宽空格会显形成 \u200b。它们不会被本页删掉,只是让你看见。

Unicode 只转中文不转英文:四种编码范围怎么选

把中文塞进只认 ASCII 的配置文件时,你要的是「结构和英文照样能读、只有中文变成转义码」, 而不是把每个字符都转一遍。范围开关就是干这个的,它比记法开关更影响可用性。

四种编码范围各转什么、适合什么场景
范围转什么典型场景
只转非 ASCII只转 U+0080 及以上:中文、日韩文、emoji、全角标点、零宽字符把中文塞进只认 ASCII 的配置、源码或 JSON,结构与英文原样可读
全部字符每个码点都转,包括英文字母、数字与半角标点混淆、对齐、逐字符检查
只转汉字只转 CJK 统一表意文字及扩展区,标点与 emoji 保持可读只想藏汉字,其余原样
只转不可见字符零宽字符、NBSP、各种窄空格、控制字符、BOM、变体选择符、全角空格排查「肉眼一样却匹配不上」的字符串

一个容易忽略的细节:「只转不可见字符」刻意不含 Tab 与换行。它们是文本 的结构字符,不是看不见的杂质;把换行也算进去会让整篇文本的换行全变成 \u000a,真正要找 的那个零宽空格反而被淹没。要连换行一起转,请选「全部字符」并关掉「保留真实换行」。

字符档案与不可见字符:零宽空格怎么找出来

零宽字符怎么找出来是这一节的重点:它们没有宽度、复制粘贴也看不见, 只有转成码点写法才会现形。

「明明看起来一模一样,程序就是判不相等」——这类问题的答案几乎总在不可见字符里。粘贴过来 的文本可能带着零宽空格 U+200B、不换行空格 U+00A0、方向控制符 U+202A、变体选择符 U+FE0F 或者 BOM U+FEFF,它们在任何编辑器里都没有形状,却是实实在在的字符。

几个最常见的「隐形嫌疑人」及其转义写法
字符码点\uXXXX常见来源
零宽空格U+200B\u200b从网页、飞书、Notion 复制文本
不换行空格U+00A0\u00a0HTML 的  、Word 与 PDF 复制
零宽连接符U+200D\u200d组合 emoji(👨‍👩‍👦 中间就有两个)
变体选择符U+FE0F\ufe0f让符号以彩色 emoji 形态显示
字节顺序标记U+FEFF\ufeffWindows 记事本另存的 UTF-8 文件开头
全角空格U+3000\u3000中文输入法下按空格键

把可疑文本粘进来、点「揪出不可见字符」,它们就会以 \u200b 这样的形式现形,并附上行号 列号;「字符档案」还会逐字给出码点、UTF-8 字节与 UTF-16 码元,方便你直接贴进 issue 或 工单里说明问题。本页只让它们现形,一个字符都不会替你删——需要清理请用「富文本清理」, 需要把全角空格变成半角请用「全角半角转换」。

Unicode 转换这页做什么、不做什么

本页的能力边界与对应的去处
事项本页的处理
支持的写法10 种:\uXXXX、\u{}、\U000XXXXX、&#十进制;、&#x十六进制;、CSS、%uXXXX、U+、十进制、0x
解码时额外认识\xNN 与大写变体 中;\n \r \t \\ 这类基础转义也照常还原
默认不识别CSS 转义与 0x(Windows 路径 C:\4e2d、源码里的 0x1F 误判率太高,需手动勾选)
裸数字20013 到底是码点还是数字无法判断,只有显式勾选「输入是纯码点列表」才解析
HTML 命名实体不做 &、 、©,遇到会原样保留并计数提示
URL 百分号编码不做 %E4%B8%AD,请用「URL 编码/解码」;本页只做 %uXXXX
JSON 语法层转义不做引号与控制字符的 JSON 语义,请用「JSON 格式化」的转义/去转义
NFC / NFD / NFKC 归一不做。é 与 e+◌́ 是两串不同码点,本页如实转成两种不同结果,不替你合并
八进制转义 \101不做,歧义太大,会原样保留并计入未知转义
单次上限500 万字或 10 MB;超过 20 万字自动分片并显示进度、可取消
网络请求与落盘零请求;只把方向、写法、范围等参数偏好记在本机,原文与结果不落盘

这件事在中文里的叫法很多:Unicode 编码转换、Unicode 编码在线转换、Unicode 解码、 Unicode 转码工具,按方向又叫中文转 Unicode 与 Unicode 转中文、汉字转 Unicode 与 Unicode 转汉字——说的都是同一件事。要按字反查身份证式的信息(码点、平面、分类、 各种编码),本页的字符档案就是一个字符编码查询在线入口;HTML 实体转中文这个方向 请用「HTML 实体转换」,两页各管一段。

英文语境下这类工具通常叫 unicode escape converter、unicode to text online、 text to unicode escape 或 text to unicode,搜 \u decoder online、chinese to unicode converter 找到的都是同一件事。要按名字找一个符号(比如「℃ 怎么打」)请用「特殊符号大全」;要把全角字符变半角请用「全角半角转换」;要比对两段文本 哪里不一样请用「文本对比」。