TapCub 正式上线:统计、分析、客服一个平台免费用

免费工具 Unicode 编码转换:中文转 Unicode、Unicode 转中文

把中文转成 \u4e2d 这样的 Unicode 转义放进 JSON 或代码,把日志里满屏的 \u652f\u4ed8 还原成中文,或者看清一段文字到底由哪些码点、哪些字节组成。还能全角转半角,揪出让「看着一样的两个值」对不上的零宽字符和不换行空格。

  • 7 种转义写法
  • 揪出看不见的字符
  • 本地处理,不上传
转换器

Unicode 转换和逐字查看

示例是一条中文事件名加一个 emoji:emoji 会转成两个 \u(代理对),这是最容易出错的地方。结果下面的表格逐字列出码点和字节。

还原转义时,各种写法可以混在一起。

结果
\u5fae\u4fe1\u652f\u4ed8\u6210\u529f \ud83d\udc4d

字符数

8

按 Unicode 码点算,一个 emoji 算 1。

UTF-16 码元

9

JavaScript 里 .length 的值。

UTF-8 字节

23

按 UTF-8 存储或传输时的大小。

不可见字符

0

零宽字符、不换行空格等。

逐字查看

还原类模式列的是结果,其它模式列的是输入。只列前 200 个字符。

字符码点十进制UTF-8UTF-16类别
微U+5FAE24494E5 BE AE5FAELo · 其他字母(含汉字)
信U+4FE120449E4 BF A14FE1Lo · 其他字母(含汉字)
支U+652F25903E6 94 AF652FLo · 其他字母(含汉字)
付U+4ED820184E4 BB 984ED8Lo · 其他字母(含汉字)
成U+621025104E6 88 906210Lo · 其他字母(含汉字)
功U+529F21151E5 8A 9F529FLo · 其他字母(含汉字)
⟨space⟩U+002032200020Zs · 空格
👍U+1F44D128077F0 9F 91 8DD83D DC4DSo · 其他符号(含 emoji)
全部在你的浏览器里计算。这里输入的任何内容都不会上传,TapCub 也不会保存。

分享这组输入:数值写在链接的 # 后面,不会发到服务器。

版本 v1.0更新于 更新记录

结果怎么看

码点、UTF-16 和 UTF-8

每个字符在 Unicode 里都有一个编号,叫码点。各种转义和编码,只是把这个编号写下来的不同方式。

码点

字符的「身份证号」,「中」是 U+4E2D。Unicode 的码点范围是 U+0000 到 U+10FFFF,共 1,114,112 个位置。表格里给出每个字的码点和类别。

\u 转义和 UTF-16

JavaScript、JSON、Java 的字符串是 UTF-16。U+FFFF 以上的字符(大部分 emoji)要用两个 16 位码元表示,叫代理对,所以 👍 写成 \ud83d\udc4d,.length 也算 2。

UTF-8 字节

网页的标准编码:英文 1 个字节,常见带音标的字母 2 个,汉字 3 个,emoji 4 个。网址百分号编码的、数据库存的,都是这些字节。

看不见的字符

零宽空格、BOM、方向控制符、不换行空格,显示出来要么什么都没有,要么像普通空格。「看着一模一样却对不上」,多半是它们。

两段看起来完全一样的文字,码点可能不同。筛选、关联、查找莫名失败时,把两边的值都粘进来,对比一下逐字表。

怎么用

三步

按手上有的和想要的选模式。

  1. 1

    选模式

    中文转 Unicode 放进代码;Unicode 转中文读日志或 JSON;转 UTF-8 字节;全角转半角;或者清除不可见字符。

  2. 2

    粘贴文字

    边输入边出结果。还原转义时,各种写法可以混在一段文字里。

  3. 3

    看逐字表

    每个字的码点、字节、类别都列出来;不可见字符会写出名字、标出位置。

对照表

同一个字符的五种写法

下表用 Python 的 str.encode 和 json.dumps 核对过。JSON 的 \u 转义是 UTF-16 写法,所以 emoji 要两个。

  • UTF-8 每个码点占 1–4 个字节,不编码代理区(RFC 3629)
  • 全角英文数字 U+FF01–U+FF5E 正好比对应的半角字符大 0xFEE0;全角空格是 U+3000
  • Python 的 json.dumps 默认转义非 ASCII(ensure_ascii=True),PHP 的 json_encode 不加 JSON_UNESCAPED_UNICODE 也会转,所以接口和日志里常见 \u652f\u4ed8
  • MySQL 的 utf8(即 utf8mb3)每个字符最多 3 个字节,存 emoji 要用 utf8mb4
示例字符的码点、UTF-8、UTF-16 和 JSON 转义
字符码点UTF-8UTF-16JSON / JS
AU+0041410041A
éU+00E9C3 A900E9\u00e9
€U+20ACE2 82 AC20AC\u20ac
中U+4E2DE4 B8 AD4E2D\u4e2d
1(全角)U+FF11EF BC 91FF11\uff11
😀U+1F600F0 9F 98 80D83D DE00\ud83d\ude00
(零宽空格)U+200BE2 80 8B200B\u200b
例子

同一个活动,报表里为什么变成了四行

活动名 双11大促 在四个地方打了标签,分别是手打的、从文档复制的、从微信聊天复制的、用全角输入法打的。看着一样,码点却不同。

看起来一样的活动名,里面到底是什么
看到的值逐字表显示和「双11大促」相同吗怎么修
双11大促1 是 U+0031相同—
双11大促1 是 U+FF11 全角数字不同全角转半角
双11大促 + 零宽空格末尾有 U+200B不同清除不可见字符
双11 大促中间是 U+00A0 不换行空格不同(多了一个空格)清除不可见字符后删掉空格

统计工具按值精确比较,每个「变种」都会在活动报表里单独成一行。活动名、事件名尽量用小写英文加下划线(如 double11_sale),手打而不是复制,四种问题都能避开。

常见错误

Unicode 处理常见的坑

字符本身很少出错,出错的是对字符的假设。

用 .length 数字数

JavaScript 数的是 UTF-16 码元,👍 算 2,国旗 emoji 算 4。字数限制按码点算,存储限制按 UTF-8 字节算。

MySQL 用 utf8 存 emoji

utf8(utf8mb3)每个字最多 3 个字节,4 字节的 emoji 会报错或被截断。用户输入的文字用 utf8mb4。

从文档、聊天里复制值

Word、网页、聊天工具会带上不换行空格和零宽字符。从那里复制来的标签、事件名,和代码里手打的不是同一个值。

还原了两次或少还原一次

\\u4e2d 还原一次得到的是文字 \u4e2d,不是「中」。先看清反斜杠本身有没有被转义过,再决定要不要再还原一次。

常见问题

Unicode 编码常见问题

还有其他问题?

直接和 TapCub 团队聊聊——工作日通常几小时内回复。

Unicode 编码是什么?中文怎么转 Unicode?

Unicode 给每个字符分配一个编号(码点),「中」是 U+4E2D。所谓「中文转 Unicode」,通常是把汉字写成 \u4e2d 这样的转义。模式选「中文转 Unicode」,再按语言选写法:JavaScript / JSON / Java 用 \uXXXX,Python 和 C 用 \U0001F600 这类,文档里常用 U+XXXX。默认只转非 ASCII 字符。

Unicode 怎么转中文?

模式选「Unicode 转中文」,把 \u652f\u4ed8 这样的内容粘进来就行。\u4e2d、\u{4E2D}、老 JavaScript escape() 产生的 %u4E2D、U+4E2D、HTML 数字实体、\xE4\xB8\xAD 字节写法都能认,混在一起也行。

emoji 为什么变成了两个 \u?

JSON 和 JavaScript 的字符串是 UTF-16,U+FFFF 以上的字符要拆成两个代理码元,所以 😀(U+1F600)写成 \ud83d\ude00。想每个字符一个转义,选 \u{…} 或 Python 写法。

Unicode 和 UTF-8 有什么区别?

Unicode 规定每个字符的编号;UTF-8 是把编号存成字节的一种方式,每个字符 1–4 个字节,汉字一般 3 个。UTF-16 是另一种,用在 JavaScript、Java 和 Windows 内部。GBK 不属于 Unicode 编码,同一个汉字在 GBK 里是 2 个字节。

全角转半角是什么意思?

全角字符是占一个汉字宽度的英文、数字和标点,比如 A、1、,(U+FF01–U+FF5E),多是中文输入法的全角模式打出来的。它们和半角的 A、1、逗号是不同的字符,手机号、邮箱校验和搜索匹配都会因此失败。「全角转半角」把它们统一成半角,可选把中文标点也换掉。

怎么找出并删掉零宽字符?

把文字粘进来:检查结果会列出每种不可见字符的名称、码点和位置,「不可见字符」显示总数。「清除不可见字符」会删掉零宽字符和方向控制符,把不换行空格换成普通空格,同时保留 👨‍👩‍👧 这类组合 emoji 里必需的连接符。

我粘贴的内容会被上传吗?

不会,全部在浏览器里处理。分享链接把文字放在网址 # 后面,浏览器不会把这部分发给服务器,但拿到链接的人都能看到。

更新记录

更新记录

这个工具的新功能、修复和数据更新,最新的在前。

  1. · v1.0

    首次上线首次上线。

缺功能或发现错误?告诉我们,常被提到的会排进下次更新。 全部工具更新

下一步

让事件名、活动名始终一致

一段脚本采集,在收件箱里确认事件名,数据质量检查帮你抓出名字的「变种」。

看清数据,找到增长。

每一次点击,都有数据依据。装好一行代码,1 分钟看到第一批数据。

无需信用卡 · 统计与客服都有免费版 · 统计无 Cookie