piapia123
zh

字符编码查询

网络

所有处理都在浏览器本地完成,数据不上传服务器

输入
把文件拖到这里可直接载入
输出

想知道「这个字符的码点是多少」「它在 URL 里要写成什么」「这段看起来是空白的东西里到底有什么字符」时用它。输入一串字符(或直接输入 `U+4E2D` 这样的码点),每个字符会得到一段:码点(U+4E2D)、十进制、UTF-8 字节、UTF-16 码元、HTML 实体、URL 编码、所属区块与分类。其中两件事值得单独说:看不见的字符会给可见替身(空格是 `␠`、制表符是 `␉`、不换行空格是 `␣`、零宽空格会标出来)—— 从网页上复制下来的一段"空白"里常常藏着不换行空格或零宽字符,那正是排版错乱与表单校验失败的原因;星形平面的字符会显示两个 UTF-16 码元(即代理对),这也是「字符串长度和看到的字数不符」的根源。

功能

  • 码点、十进制、UTF-8 字节、UTF-16 码元一次给全
  • HTML 实体(中)与 URL 编码(%E4%B8%AD)直接可用
  • 看不见的字符给可见替身:空格 / 制表符 / 不换行空格 / 零宽字符
  • 标出字符分类:汉字、字母、数字、标点、emoji、控制字符、格式字符
  • 所属区块(基本拉丁、中日韩统一表意文字、emoji 区…)
  • 星形平面字符(emoji 等)会说明它占两个 UTF-16 码元
  • 也可以直接输入码点查询(U+4E2D / 0x4E2D / 十进制 20013)
  • 多字符输入会逐字符分段显示
  • 另可按名字搜 emoji(heart 出所有心、cat 出所有猫),结果按分组排列并附码点
  • ⚠️ emoji 可以只看某个分组(表情 / 手势与人物 / 动物与自然…);关键词留空就是按分类浏览,整张精选表按分组带标题全部列出,不截断
  • ⚠️ 分组下拉只对「搜 emoji」有效 —— 「查字符」是逐字符给编码,字符本身没有分组这回事

使用方法

  1. 把字符粘进输入框(或直接输入 U+4E2D 这样的码点)
  2. 每个字符一段,各种编码立刻出现
  3. 查看不见的字符时看「字符」那一行的替身写法
  4. 点行末的复制按钮取走需要的值
  5. 要查 emoji 就选「搜 emoji」;想收窄结果再选一个分组,关键词留空则按分组浏览整张表

常见问题

为什么「🎉」的字符串长度是 2?
因为 JavaScript 的字符串长度按 UTF-16 码元计,而 🎉(U+1F389)在 UTF-16 里要写成两个码元(一个代理对)。这解释了那个经典 bug:`'🎉'.length === 2`,`'🎉'.slice(0, 1)` 会切出半个字符,显示成乱码方块。正确的做法是按码点遍历(`[...str]`)或用 `Array.from()`。这个工具会把码元逐一列出来,一眼就能看出它在 UTF-16 里占两个位置。
怎么查出「看起来是空格但其实不是」的字符?
把那一段粘进来,看「字符」那一行:如果显示 `␠` 就是普通空格(U+0020);`␣` 是不换行空格(U+00A0);`␉` 是制表符;标着「零宽空格」的是 U+200B;「BOM / 零宽不换行空格」是 U+FEFF。这些字符在页面上都看不见,却是排版错乱、搜索匹配不上、表单提示「包含非法字符」的常见原因 —— 而从网页或 PDF 里复制文本时特别容易带上它们。
为什么有的字符显示「未收录区块」?
因为区块表只收录了常见的那几十个(基本拉丁、希腊、西里尔、汉字、假名、谚文、emoji 等)。遇到表外的字符,工具会给出「未收录区块」加码点,而不是硬套一个近似的名字 —— 那个名字一旦是错的,你去搜索引擎里查就会查不到东西。要查完整的区块列表,可以搜「Unicode blocks」。
能反着查吗?我有码点,想知道是哪个字符。
可以。输入 `U+4E2D`、`0x4E2D` 或十进制 `20013`,工具会先把它还原成字符再给出全部信息。注意纯数字按十进制读(`20013` 就是 U+4E2D),要写十六进制请带上字母(`4E2D`)或前缀(`U+`、`0x`)—— 否则 `20013` 会被当成 0x20013,得到一个完全不同的字。
选了分组,为什么「查字符」模式下没反应?
因为分组只对 emoji 有意义:字符模式是逐字符给出编码、区块与分类,字符本身没有「emoji 分组」这回事,所以那个下拉在字符模式下不参与计算 —— 不是坏了,也不是选项没生效。两个下拉分开就是这个原因:如果把「模式」和「分组」并成一个列表,选分组时就得连带把模式悄悄切成 emoji,而用户还以为自己只是在收窄结果。

相关工具