Unicode字符查询
查字符的 Unicode 码位。
这个工具能做什么
这个工具做的事情很直接:你把一个字符粘进去,它给出这个字符的 Unicode 码位(U+XXXX 形式)、对应的十进制码点、可以直接写进 HTML 的实体写法,以及在 JavaScript 里的转义写法;反过来,你手里只有一串 U+4F60 这样的码位,也能反查出它到底是哪个字。真正的痛点在于很多字符肉眼根本分不清——长得像空格的其实是全角空格,看着一样的引号可能是不同码位的中英文引号,还有 emoji、生僻字、甚至完全不可见的零宽字符,靠眼睛看永远说不清,只有把它落到具体的 unicode码点上才能确认。做字符编码查询、排查乱码或者对齐前后端转义格式时,这一步几乎绕不开。
背后的逻辑是 Unicode 给每一个字符分配了唯一的码位,范围从 U+0000 一直到 U+10FFFF。需要注意的是,JavaScript 内部字符串用的是 UTF-16,基本多文种平面(BMP,U+0000 到 U+FFFF)内的字符一个码元就够,而像 emoji 这类超出 BMP 的字符要用一对代理项(surrogate pair)两个码元来表示。工具取字符时用的是 codePointAt 而不是老的 charCodeAt,拿到的是真正的码点而非半个代理项;随后把它转成十六进制就是 U+XXXX,转十进制就是码位查询里常说的十进制码点,HTML 实体则有 &#十进制; 和 &#x十六进制; 两种写法,JS 转义在 BMP 内是 \uXXXX、超出时用 ES6 的 \u{XXXXX}。整个字符编码查询过程都在浏览器本地完成,输入的内容不会上传。
举两个常见例子。一是接口调试:后端返回的 你好 你看不懂,把 U+4F60 丢进反查,立刻知道是「你」,省去心算或翻表;二是排查对不齐的排版:一段文字里某个「空格」怎么都对不齐,查一下发现它是 U+00A0 不间断空格或者 U+3000 全角空格,而不是普通的 U+0020,问题一下就定位了。类似地,想把某个 emoji 写进代码,先查出 😀 是 U+1F600,就能直接得到对应的 JS 转义和 HTML 实体,不用在编辑器里复制粘贴一个不可见的字符。反查一串 unicode码点、正查一个陌生符号,是日常里用得最多的两个方向。
有几个容易踩的点。首先码位不等于字节数:一个 unicode码点在 UTF-8 下可能占 1 到 4 个字节,这个工具给的是码位和转义写法,不是它序列化成 UTF-8 后的字节序列,别把两者混为一谈。其次是组合字符,比如带音标的 é 有时是单一码位 U+00E9,有时是基础字母 e 加一个组合重音记号两个码位拼出来的,看着一个字、实际是两个码位,反查时要留意。另外 U+D800 到 U+DFFF 这段是代理项专用区间,本身不对应任何可显示字符,单独出现通常意味着字符串被截断或者编码出了问题。
Unicode字符查询是一个免费的在线工具,打开网页就能用,不用下载也不用注册。平时大家搜的“unicode查询”、“字符码位”、“unicode码点”,说的都是这个。
常见使用场景
- 反查接口返回的 \uXXXX 转义到底是什么字
- 分辨全角空格和普通空格造成的排版错位
- 查 emoji 的码位和 JS 转义写法再写进代码
- 排查文本里混入的不可见零宽字符
- 把生僻字转成 HTML 实体写进网页
使用方法
- 把内容粘贴到输入框(生成类工具直接设置选项)。
- 按需要选择选项,点操作按钮。
- 结果出现在下方,点「复制结果」即可带走。