关于此工具
Unicode 字符检查器将字符串拆分为其各个码点,并显示每个码点的全部信息。它按码点(而非按 16 位单元)迭代,因此由代理对组成的星平面字符和 emoji 会被正确处理。对于每个码点,你都会得到字形、其 U+XXXX 十六进制值、十进制值、知名字符的名称、通用类别,以及它所属的 Unicode 区块。
所有分析都在你的浏览器中算法化推导,不会上传任何内容。这些编码从基本原理计算:UTF-8 字节遵循 1 到 4 字节的编码规则,UTF-16 码元在 BMP 中为单个单元或在其上方为高/低代理对(D800–DBFF / DC00–DFFF),HTML 数值实体为 &#nnnn;,JavaScript 转义在 BMP 中为 \uXXXX、对星平面码点为 \u{XXXXX},百分号编码为写成 %XX 的 UTF-8 字节。通用类别(Lu、Ll、Nd、Mn、Zs、Cc 等)用 Unicode 属性转义正则表达式检测。
检查器会标记那些常引发 bug 或被用于隐藏文本的字符:零宽字符(200B–200D、2060、FEFF)、双向控制符(200E、200F、202A–202E、2066–2069)、组合标记,以及 C0/C1 控制字符——这些以一个点显示,使不可见的内容变得可见。摘要行报告码点数量、UTF-16 长度(String.length)和 UTF-8 总字节数。此工具用于检查;若要在 NFC 和 NFD 之间规范化,请使用 Unicode 规范化工具。以制表符分隔的文本复制完整拆解。
常见问题
为什么一个 emoji 算作一个条目但长度为 2?
许多 emoji 和所有 U+FFFF 以上的字符都是单个码点,在 UTF-16 中编码为代理对——两个 16 位单元。检查器按码点迭代,因此它显示一行,而 JavaScript 的 String.length 计入这两个单元,摘要会单独报告它。
UTF-8 和 UTF-16 字节是如何推导的?
它们直接从码点计算:UTF-8 使用标准的 1–4 字节规则,UTF-16 对 BMP 字符为一个单元、对星平面字符为高+低代理对(D800–DBFF 然后 DC00–DFFF)。百分号编码就是那些写成 %XX 的 UTF-8 字节。
这些标志是什么意思?
它们突出显示容易被忽视的字符:零宽(200B–200D、2060、FEFF)、可重排文本的双向控制符、附着于前一字母的组合标记,以及控制字符。此类字符以一个居中的点显示,从而揭示隐藏或不可见的内容。
它会显示官方的 Unicode 字符名称吗?
它会为知名字符(控制码、空格、零宽和 bidi 控制符)命名,并始终为每个码点显示 Unicode 区块和通用类别。Unicode 数据库中完整的逐字符名称未捆绑,因此其他情况下区块名称充当描述符。