Unicode 工具

Unicode Encoder

Unicode 编码与解码

中文、emoji 与 \uXXXX、\u{1F600}、U+4F60、你、 %u4F60 等转义格式双向互转,并可查询任意字符的码位、UTF-8 / UTF-16 编码与所属区块。 全部在浏览器本地完成。

双向实时转换 码位查询 emoji 代理对
0 字符
0 字符

左右两侧双向联动:改左边自动编码,改右边自动解码; 解码自动识别上述七种格式,\n、\t 这类控制转义会原样保留,避免破坏代码字符串

关于 Unicode 与转义写法

码位、UTF-8 与 UTF-16

Unicode 给世界上每个字符分配一个唯一编号,称为码位(Code Point),写作 U+4F60 这样的形式, 与 UTF-8、UTF-16 等具体编码方式无关。UTF-8 用 1-4 个字节表示一个码位并兼容 ASCII,适合存储与网络传输; UTF-16 用 2 个字节表示 BMP 内的字符,超出 U+FFFF 的字符则要用两个 2 字节码元拼接,也就是常说的代理对。 JavaScript、Java、C# 等语言的字符串内部都是 UTF-16。

本工具支持的格式

  • \uXXXX:JavaScript / JSON / Java 常见写法,四位十六进制(增补平面写成两个代理码元)。
  • \u{XXXXX}:ES6 码位写法,可直接表达 \u{1F600} 这类增补平面字符。
  • U+XXXX:Unicode 标准的码位表示法,常见于文档与字符表。
  • &#xXXXX; / &#DDDD;:HTML 十六进制与十进制字符实体。
  • %uXXXX / \xXX:老式 URL 编码与 Latin-1 字节转义,多出现在遗留系统里。

使用要点

  • 勾选「仅转换非 ASCII」时,英文、数字与半角符号原样保留,只把中文、emoji 等字符转义,结果更易读。
  • 勾选「保留换行」时换行不会被编码成 \u000a,便于保留多行结构。
  • 「码位查询」会把输入拆成一个个码位,列出 UTF-8 / UTF-16 编码与所属区块,方便排查乱码与不可见字符。
  • 所有运算都在本地完成,不会上传文本,也不保存任何内容。

常见问题

中文怎么转换成 \uXXXX 这种形式?

JavaScript 等语言用 UTF-16 表示字符串,每个 UTF-16 码元写作 \u 加四位十六进制,例如「你」是 U+4F60,写作 \u4f60; 「好」是 U+597D,写作 \u597d。把文本粘贴到左侧输入框,右侧会实时生成对应的 \u 转义,复制即可使用。

为什么 emoji 编码后是两段 \uXXXX?

码位大于 U+FFFF 的字符位于增补平面,单个 UTF-16 码元放不下,需要用两个码元(代理对)拼接,例如 😀 U+1F600 写作 \ud83d\ude00。若使用 ES6 的 \u{1F600} 语法则可以只写一段。本工具切换格式即可查看两种写法。

Unicode 码位、UTF-8、UTF-16 有什么区别?

码位是字符在 Unicode 字符集中的编号(U+XXXX),与编码方式无关;UTF-8、UTF-16、UTF-32 是把编号存进字节流的不同方案: UTF-8 变长 1-4 字节、兼容 ASCII;UTF-16 以 2 字节或代理对表示,是 Java、JS、Windows 内部使用的形式。

为什么有些字符解码后没有变化?

本工具只识别 \uXXXX、\u{...}、\U0001F600、%uXXXX、\xXX、U+XXXX、&#xXXXX;、&#DDDD; 这些转义写法。 普通 ASCII、Base64、GBK 乱码都不属于上述格式;\n、\t 这类控制转义也不会被改写,以免破坏代码字符串。

输入的内容会上传到服务器吗?

不会。编码、解码与码位查询都使用浏览器原生能力(String.fromCodePoint、TextEncoder 等)在本地完成, 页面不发起任何与内容相关的请求,也不保存记录。