使用方法
- 在「查询」框里填一个字符或一个实体名。默认示例填的是 &(页面源码里写作
&),也可以填 amp、38、x26、U+0026——四种写法都能命中同一条。 - 「类别」选全部或某一类。类别与查询是「且」的关系:选了「箭头」再查 amp,结果为 0 条;查询框留空时,列出该类别下的全部条目。
- 「输出格式」决定批量结果里每行输出什么:默认三项齐全(实体名 + 十进制 + 十六进制),也可以只要其中一种。
- 按 Enter 或点「查询实体」,结果区给出字符、实体名、十进制引用、十六进制引用、Unicode 码点、类别、是否必须转义与命中条数。
- 批量查询框每行写一个关键词,按 Ctrl / Cmd + Enter 一次查完,结果逐行写在右侧只读框里,未命中的行会写明「未找到」。
HTMLEntity速查表能解决什么
一是记住名字、想不起码值时,一次性拿到三种写法。写页面时最常遇到的不是「不知道要转义」,而是「知道有版权符号这个实体,但记不住它是 169 还是 168」。默认示例查 &,本页同时给出 &、&、& 与 U+0026 四种可直接复制的写法,不用再去翻规范文档。
二是反过来查:看到一段陌生源码,想知道 → 到底是什么。把 8594 粘进查询框,会命中右箭头 →,并告诉它对应实体名 →、十六进制 →、码点 U+2192。批量框一次可以贴十几行,适合读别人写的模板或邮件 HTML。
三是分清「必须转义」与「可以不转义」。&、< 是必须转义的,因为它们直接参与标签与引用的解析;©、€ 只是便利写法,UTF-8 页面里直接写字符 ©、€ 完全没问题。本页把这一列单独列出,避免把 36 条实体一律当成必转。
四是在正确的场景里使用实体。 是不换行空格,作用是禁止在此处断行,而不是「多打一个空格」——用它来做中文排版缩进会在复制文本时带出一堆 U+00A0,粘贴到别的系统里变成乱码。本页把它单列一条并标注类别,就是提醒它属于排版控制字符。
本页不做这些事:不转义整段 HTML(那是转义工具的活),不解析富文本,不覆盖 WHATWG 命名字符引用的全部两千多条(只收录最常用的 36 条),也不判断某个字符在你的目标编码里能不能直接存。它是一张速查表,不是全量字典。
原理和变量
① 用的函数和算法。单条查询用一次线性扫描:把 36 条记录逐条比对,命中就收集进结果数组,取第一条填卡片。比对前做规范化——实体名先去掉首尾的「&」与「;」、再转小写;查询串同样转小写;十进制码直接比字符串;十六进制码同时接受 26、x26、U+0026 三种写法。码点由 charCodeAt(0).toString(16) 生成并补零到四位。把结果插进页面前还要过一道 esc():把 & 换成 &、< 换成 <——否则你要显示的源码文本 & 会被浏览器再解一次,屏幕上只剩下一个孤零零的 &。
② 关键参数为什么这样取。同时保留十进制与十六进制两列,是因为两者并不等价流行:十进制引用来自 SGML/XML 时代的老习惯,兼容性最好,连很旧的解析器都认;十六进制引用与 Unicode 码点数字一致,读代码时更容易和字体表、字符集对照,HTML5 的示例代码也更常用十六进制。是否必须转义这一列只标两类——参与解析的五个预定义实体标「必须/建议」,其余全部标「否」,不做第三档模糊判断,因为中间地带(比如属性值里的引号)取决于引号用的是单引号还是双引号,属于上下文而非字符本身的属性。
③ 遵循的标准。命名实体来自 WHATWG HTML Living Standard 的 named character references 列表;其中 &、<、>、"、' 这五个继承自 XML 的预定义实体,在所有 HTML 与 XML 解析器里都被定义,其余命名实体在 XML 里不一定可用。数字字符引用遵循 ISO/IEC 10646,十进制与十六进制都指向同一个 Unicode 码位,& 与 & 完全等价。
④ 输入怎么变成输出。查 &:字符通道命中第 1 条 → 实体名 &、十进制 38、十六进制 26、码点 U+0026、类别「保留字符」、必须转义。查 8594:十进制通道命中右箭头 → 实体名 →、十进制 8594、十六进制 2192、码点 U+2192、类别「箭头」、不必转义。查 copy:实体名通道(去掉 & 与 ; 后小写比较)命中 → ©、169、A9、U+00A9。三条路径共用同一张表、同一个渲染函数。
⑤ 边界与阈值。查询串最长 40 字符,超过会被截断提示;查询为空时退化为「列出当前类别全部」,不算错误。结果数为 0 时给出具体提示并说明当前类别与查询串是什么,不静默显示空卡片。批量框最多处理 200 行,超出部分提示只处理前 200 行。不换行空格在源码里以 \u00A0 存储,页面上显示为一个空格位,复制时会带走真实的 U+00A0 码位——这是它的本意,不是 bug。
⑥ 常见误用的正确解释。第一条是在 <script> 与 <style> 里写实体:这两个元素的内容按原始文本解析,写 & 不会被解码,只会原样出现在脚本里。第二条是省略分号:HTML5 对部分命名实体允许省略结尾分号,但 XML 与很多模板引擎不允许,& 在 XML 里直接报错,所以本页输出的写法一律带分号。第三条是把实体当转义工具用:在文本内容里写 < 只会显示字面量 < 而不会开启标签,但把用户输入拼进 HTML 时,正确做法仍是对 & 与 < 做输出转义,而不是让用户自己写实体。第四条是拿 做排版缩进,见上一节。
完整示例(数值仅作演示)
示例条件与页面打开时的默认值一致:查询 &、类别「全部」、输出格式「三项齐全」。逐步推导:
- 字符 &:字符通道直接命中第 1 条记录。
- 实体名
&:这是五个 XML 预定义实体之一,也是唯一必须出现在「文本内容里的 &」位置上的写法。 - 十进制
&:38 是 & 在 Unicode / ASCII 里的码位,十进制写法。 - 十六进制
&:38 的十六进制是 26,与码点 U+0026 末两位一致。HTML5 里 x 大小写均可,本页统一输出小写 x、大写十六进制数字(A9、2122、20AC 这类)。 - Unicode 码点 U+0026:补零到四位,便于和字符表对照。
- 命中条目 1 条:字符通道只可能命中一条;若改查
amp,实体名通道同样只命中这一条。
批量框的四行演示也是同样的路径:& 走字符通道,< 走字符通道,copy 走实体名通道,8594 走十进制通道,输出四行 输入 -> 实体名 | 十进制 | 十六进制 | 码点。把输出格式切成「只要实体名」再按 Ctrl+Enter,每行就只剩 &、<、©、→,可以直接粘进模板。
输入范围与对照表
四类输入通道与它们的匹配范围如下:
| 输入通道 | 写法示例 | 匹配方式 | 最长 / 最多 | 不命中时 |
|---|---|---|---|---|
| 字符本身 | & © → | 与记录的字符做全等比较 | 40 字符 | 提示未找到并回显查询串 |
| 实体名 | amp copy rarr | 去 & 与 ; 后小写全等,2 字以上再做包含匹配 | 40 字符 | 同上 |
| 十进制码 | 38 169 8594 | 与十进制码字符串全等 | 40 字符 | 同上 |
| 十六进制码 | 26 x26 U+0026 | 去掉 x / U+ 前缀后与十六进制码小写全等 | 40 字符 | 同上 |
| 类别过滤 | 全部 / 箭头 / 货币 | 与查询串取「且」,留空则列全类 | 6 选 1 | 该类别为空时提示 |
| 批量行 | 每行一个关键词 | 逐行走上面四条通道,取首条命中 | 200 行 | 该行输出「未找到」 |
下方对照表由页面直出,共 18 行,默认显示前 12 行,点「加载更多」展开全部;「导出 CSV」得到带 BOM 的表格文件,「复制对照表」把整表以制表符分隔复制走,「复制批量结果」只复制右侧输出框的内容。
| 字符 | 实体名 | 十进制 | 十六进制 | 类别 | 是否必须转义 |
|---|---|---|---|---|---|
| & | & | & | & | 保留字符 | 必须 |
| < | < | < | < | 保留字符 | 必须 |
| > | > | > | > | 保留字符 | 建议 |
| " | " | " | " | 保留字符 | 属性值内必须 |
| ' | ' | ' | ' | 保留字符 | 属性值内建议 |
| © | © | © | © | 标点与符号 | 否 |
| ® | ® | ® | ® | 标点与符号 | 否 |
| ™ | ™ | ™ | ™ | 标点与符号 | 否 |
| … | … | … | … | 标点与符号 | 否 |
| — | — | — | — | 标点与符号 | 否 |
| → | → | → | → | 箭头 | 否 |
| ← | ← | ← | ← | 箭头 | 否 |
| € | € | € | € | 货币 | 否 |
| £ | £ | £ | £ | 货币 | 否 |
| ¥ | ¥ | ¥ | ¥ | 货币 | 否 |
| α | α | α | α | 希腊字母 | 否 |
| π | π | π | π | 希腊字母 | 否 |
| ≤ | ≤ | ≤ | ≤ | 数学符号 | 否 |
把两张表连起来看:五个保留字符集中在十进制 34~62 这个 ASCII 区间内,而箭头、货币、数学符号全部落在 128 以上,这正是「UTF-8 页面里后面这些可以直接写字符」的原因——它们不参与标签解析,转义只是为了让源码在任意编码环境下都能安全传输。
结果边界和舍入
- 码点固定四位十六进制。U+0026、U+00A9 这类不足四位的补前导零;超过四位的(如 ™ 的 U+2122)按实际位数输出,不做截断。
- 十六进制数字用大写、前缀 x 用小写。输出形如
€。两者大小写都不影响解析,统一是为了复制出去的代码风格一致。 - 实体名一律带结尾分号。HTML5 允许部分命名实体省略分号,但 XML 与多数模板引擎不允许;本页不输出省略写法。
- 命中多条时取第一条,其余在提示里列出。包含匹配(查询串 2 个字以上)可能命中多条,卡片填第一条,「命中条目」给出总数,提示区列出前 8 个实体名。
- 0 命中不静默。错误区写明当前查询串与类别,并提示可以先切成「全部」再查,不会显示一张空卡片。
- 批量结果逐行独立。某一行未找到不影响其他行;超过 200 行只处理前 200 行并在提示里说明。
- 本页不做整段转义。HTMLEntity速查表只做「一条记录 ↔ 四种写法」的对照,不替你把一段 HTML 里的 & 与 < 全部转掉,也不修改你的原始文本。
常见问题
为什么我查到了却复制下来变成了一个字符?
因为你复制的是渲染后的结果,而不是源码文本。本页在渲染前会把 & 再转义一次,页面上显示 & 就应该是五个字符的源码文本;如果你选中的区域看起来只有 &,说明选到了「字符」那一格而不是「实体名」那一格。批量结果框里的整行文本是纯文本,最适合整段复制。
十进制和十六进制引用有区别吗?
没有功能区别,& 与 & 指向同一个码位,任何支持数字字符引用的解析器都认。区别只在来源和可读性:十进制来自 SGML/XML 时代的习惯、兼容性最广;十六进制与 Unicode 码点一致,方便和字符集、字体表对照。HTML5 的示例更常用十六进制,老项目的模板里更常见十进制。
哪些实体是必须转义的?
只有五个预定义实体所在的字符需要认真对待:&、<、>、"、'。其中 & 与 < 在文本内容里必须转义,> 一般可以直写(本页标「建议」),引号只在属性值内部需要转义,且取决于属性值用的是双引号还是单引号。其余 31 条(©、€、→、α 等)在 UTF-8 页面里直接写字符完全没问题,它们只是便利写法。
能不能用 做中文段落缩进?
不建议。 是 U+00A0 不换行空格,作用是禁止在此处断行,把它连续堆起来做缩进,会让复制出去的正文里混进大量 U+00A0,粘到别的系统、数据库或搜索框里经常变成乱码或匹配失败。中文段落缩进请用 CSS 的 text-indent,需要不断行的地方(如「100 kg」)才用这个实体。
在 script 或 style 里写实体为什么没生效?
因为 <script> 与 <style> 的内容按原始文本解析,HTML 实体不会被解码。在里面写 &,脚本拿到的就是字面的 & 六个字符。要在脚本里表示一个 & 就直接写 &,要拼接 HTML 字符串就交给模板引擎的输出转义去做。
为什么只收录 36 条?我需要更全的表怎么办?
WHATWG 的命名字符引用列表有两千多条,绝大多数(各种语言的字母变体、冷门数学符号)日常用不到,塞进速查表反而找不到重点。本页按「保留字符 + 六类高频符号」挑选 36 条,覆盖绝大多数写页面时的需求。遇到这里没有的字符,直接用十进制或十六进制数字引用即可——数字引用对任意 Unicode 码位都成立,不依赖命名表。
查询框填了却显示 0 条,是哪里错了?
先看类别:类别与查询串是「且」的关系,选了「货币」再查 amp 必然是 0 条,把类别切回「全部」再试。其次看写法:实体名通道会自动去掉首尾的 & 与 ;,所以 amp、&、& 三种都能命中;但拼错成 anp 就没有了。数字通道要求纯数字(十六进制可带 x 或 U+ 前缀),写成 #38 不会被识别。
我的查询内容会被上传吗?
不会。整张表和全部检索逻辑都在页面里,查询、批量查询、导出 CSV 都在你的浏览器本地完成,不发起任何网络请求,也不记录历史。导出的 CSV 文件带 BOM,Excel 打开不会乱码;JSON 导出不带 BOM,方便程序读取。
相关工具
- TSV转CSV转换器:把导出的制表符对照表整理成标准 CSV 再入库。
- 正则转义工具:给待匹配的字符串加正则转义,配合实体清理脚本使用。
- CSV转Markdown表格:把本页导出的对照表直接变成文档里的表格。
- JSON美化打印:接口里返回带实体的字符串时,先格式化再逐条核对。
- JSON转环境变量转换器:把配置里的转义串转成可注入的环境变量格式。
- 数字转比特转换器:核对字符编码时按位查看十进制与十六进制的对应关系。
- 文本差异检测:转义前后两段文本逐行对比,确认没有多转或漏转。