HTMLEntity速查表

输入一个字符(如 &)或一个实体名(如 amp),HTMLEntity速查表立刻给出它的命名实体、十进制引用、十六进制引用、Unicode 码点与是否必须转义。内置六类共 36 条常用条目,可按类别浏览、批量查询、导出 CSV,全部在你自己的浏览器里检索。

匹配规则:实体名去掉「&」与「;」后与查询串做小写全等比较,同时支持按字符本身、十进制码、十六进制码(可带 x 前缀或 U+ 前缀)四种通道命中;查询留空时列出当前类别全部条目。渲染前会把「&」再转义一次,所以页面上看到的是可直接复制的源码文本,而不是被浏览器解出来的字符。
常用实体对照表(共 18 行,默认显示前 12 行)
字符实体名十进制十六进制类别是否必须转义
&&&&保留字符必须
<&lt;&#60;&#x3C;保留字符必须
>&gt;&#62;&#x3E;保留字符建议
"&quot;&#34;&#x22;保留字符属性值内必须
'&apos;&#39;&#x27;保留字符属性值内建议
 &nbsp;&#160;&#xA0;标点与符号否
©&copy;&#169;&#xA9;标点与符号否
®&reg;&#174;&#xAE;标点与符号否
™&trade;&#8482;&#x2122;标点与符号否
…&hellip;&#8230;&#x2026;标点与符号否
—&mdash;&#8212;&#x2014;标点与符号否
·&middot;&#183;&#xB7;标点与符号否
→&rarr;&#8594;&#x2192;箭头否
←&larr;&#8592;&#x2190;箭头否
↔&harr;&#8596;&#x2194;箭头否
€&euro;&#8364;&#x20AC;货币否
£&pound;&#163;&#xA3;货币否
¥&yen;&#165;&#xA5;货币否

提示:单行查询框里按 Enter 立即查询;批量框用 Ctrl / Cmd + Enter 执行(Enter 留给换行)。表格默认显示前 12 行,点「加载更多」展开全部 18 行。

使用方法

  1. 在「查询」框里填一个字符或一个实体名。默认示例填的是 &(页面源码里写作 &amp;),也可以填 amp、38、x26、U+0026——四种写法都能命中同一条。
  2. 「类别」选全部或某一类。类别与查询是「且」的关系:选了「箭头」再查 amp,结果为 0 条;查询框留空时,列出该类别下的全部条目。
  3. 「输出格式」决定批量结果里每行输出什么:默认三项齐全(实体名 + 十进制 + 十六进制),也可以只要其中一种。
  4. 按 Enter 或点「查询实体」,结果区给出字符、实体名、十进制引用、十六进制引用、Unicode 码点、类别、是否必须转义与命中条数。
  5. 批量查询框每行写一个关键词,按 Ctrl / Cmd + Enter 一次查完,结果逐行写在右侧只读框里,未命中的行会写明「未找到」。

HTMLEntity速查表能解决什么

一是记住名字、想不起码值时,一次性拿到三种写法。写页面时最常遇到的不是「不知道要转义」,而是「知道有版权符号这个实体,但记不住它是 169 还是 168」。默认示例查 &,本页同时给出 &amp;、&#38;、&#x26; 与 U+0026 四种可直接复制的写法,不用再去翻规范文档。

二是反过来查:看到一段陌生源码,想知道 &#8594; 到底是什么。把 8594 粘进查询框,会命中右箭头 →,并告诉它对应实体名 &rarr;、十六进制 &#x2192;、码点 U+2192。批量框一次可以贴十几行,适合读别人写的模板或邮件 HTML。

三是分清「必须转义」与「可以不转义」。&amp;、&lt; 是必须转义的,因为它们直接参与标签与引用的解析;&copy;、&euro; 只是便利写法,UTF-8 页面里直接写字符 ©、€ 完全没问题。本页把这一列单独列出,避免把 36 条实体一律当成必转。

四是在正确的场景里使用实体。&nbsp; 是不换行空格,作用是禁止在此处断行,而不是「多打一个空格」——用它来做中文排版缩进会在复制文本时带出一堆 U+00A0,粘贴到别的系统里变成乱码。本页把它单列一条并标注类别,就是提醒它属于排版控制字符。

本页不做这些事:不转义整段 HTML(那是转义工具的活),不解析富文本,不覆盖 WHATWG 命名字符引用的全部两千多条(只收录最常用的 36 条),也不判断某个字符在你的目标编码里能不能直接存。它是一张速查表,不是全量字典。

原理和变量

① 用的函数和算法。单条查询用一次线性扫描:把 36 条记录逐条比对,命中就收集进结果数组,取第一条填卡片。比对前做规范化——实体名先去掉首尾的「&」与「;」、再转小写;查询串同样转小写;十进制码直接比字符串;十六进制码同时接受 26、x26、U+0026 三种写法。码点由 charCodeAt(0).toString(16) 生成并补零到四位。把结果插进页面前还要过一道 esc():把 & 换成 &amp;、< 换成 &lt;——否则你要显示的源码文本 &amp; 会被浏览器再解一次,屏幕上只剩下一个孤零零的 &。

② 关键参数为什么这样取。同时保留十进制与十六进制两列,是因为两者并不等价流行:十进制引用来自 SGML/XML 时代的老习惯,兼容性最好,连很旧的解析器都认;十六进制引用与 Unicode 码点数字一致,读代码时更容易和字体表、字符集对照,HTML5 的示例代码也更常用十六进制。是否必须转义这一列只标两类——参与解析的五个预定义实体标「必须/建议」,其余全部标「否」,不做第三档模糊判断,因为中间地带(比如属性值里的引号)取决于引号用的是单引号还是双引号,属于上下文而非字符本身的属性。

③ 遵循的标准。命名实体来自 WHATWG HTML Living Standard 的 named character references 列表;其中 &amp;、&lt;、&gt;、&quot;、&apos; 这五个继承自 XML 的预定义实体,在所有 HTML 与 XML 解析器里都被定义,其余命名实体在 XML 里不一定可用。数字字符引用遵循 ISO/IEC 10646,十进制与十六进制都指向同一个 Unicode 码位,&#38; 与 &#x26; 完全等价。

④ 输入怎么变成输出。查 &:字符通道命中第 1 条 → 实体名 &amp;、十进制 38、十六进制 26、码点 U+0026、类别「保留字符」、必须转义。查 8594:十进制通道命中右箭头 → 实体名 &rarr;、十进制 8594、十六进制 2192、码点 U+2192、类别「箭头」、不必转义。查 copy:实体名通道(去掉 & 与 ; 后小写比较)命中 → &copy;、169、A9、U+00A9。三条路径共用同一张表、同一个渲染函数。

⑤ 边界与阈值。查询串最长 40 字符,超过会被截断提示;查询为空时退化为「列出当前类别全部」,不算错误。结果数为 0 时给出具体提示并说明当前类别与查询串是什么,不静默显示空卡片。批量框最多处理 200 行,超出部分提示只处理前 200 行。不换行空格在源码里以 \u00A0 存储,页面上显示为一个空格位,复制时会带走真实的 U+00A0 码位——这是它的本意,不是 bug。

⑥ 常见误用的正确解释。第一条是在 <script> 与 <style> 里写实体:这两个元素的内容按原始文本解析,写 &amp; 不会被解码,只会原样出现在脚本里。第二条是省略分号:HTML5 对部分命名实体允许省略结尾分号,但 XML 与很多模板引擎不允许,&amp 在 XML 里直接报错,所以本页输出的写法一律带分号。第三条是把实体当转义工具用:在文本内容里写 &lt; 只会显示字面量 < 而不会开启标签,但把用户输入拼进 HTML 时,正确做法仍是对 & 与 < 做输出转义,而不是让用户自己写实体。第四条是拿 &nbsp; 做排版缩进,见上一节。

完整示例(数值仅作演示)

示例条件与页面打开时的默认值一致:查询 &、类别「全部」、输出格式「三项齐全」。逐步推导:

  • 字符 &:字符通道直接命中第 1 条记录。
  • 实体名 &amp;:这是五个 XML 预定义实体之一,也是唯一必须出现在「文本内容里的 &」位置上的写法。
  • 十进制 &#38;:38 是 & 在 Unicode / ASCII 里的码位,十进制写法。
  • 十六进制 &#x26;:38 的十六进制是 26,与码点 U+0026 末两位一致。HTML5 里 x 大小写均可,本页统一输出小写 x、大写十六进制数字(A9、2122、20AC 这类)。
  • Unicode 码点 U+0026:补零到四位,便于和字符表对照。
  • 命中条目 1 条:字符通道只可能命中一条;若改查 amp,实体名通道同样只命中这一条。

批量框的四行演示也是同样的路径:& 走字符通道,< 走字符通道,copy 走实体名通道,8594 走十进制通道,输出四行 输入 -> 实体名 | 十进制 | 十六进制 | 码点。把输出格式切成「只要实体名」再按 Ctrl+Enter,每行就只剩 &amp;、&lt;、&copy;、&rarr;,可以直接粘进模板。

输入范围与对照表

四类输入通道与它们的匹配范围如下:

输入通道写法示例匹配方式最长 / 最多不命中时
字符本身& © →与记录的字符做全等比较40 字符提示未找到并回显查询串
实体名amp copy rarr去 & 与 ; 后小写全等,2 字以上再做包含匹配40 字符同上
十进制码38 169 8594与十进制码字符串全等40 字符同上
十六进制码26 x26 U+0026去掉 x / U+ 前缀后与十六进制码小写全等40 字符同上
类别过滤全部 / 箭头 / 货币与查询串取「且」,留空则列全类6 选 1该类别为空时提示
批量行每行一个关键词逐行走上面四条通道,取首条命中200 行该行输出「未找到」

下方对照表由页面直出,共 18 行,默认显示前 12 行,点「加载更多」展开全部;「导出 CSV」得到带 BOM 的表格文件,「复制对照表」把整表以制表符分隔复制走,「复制批量结果」只复制右侧输出框的内容。

字符实体名十进制十六进制类别是否必须转义
&&amp;&#38;&#x26;保留字符必须
<&lt;&#60;&#x3C;保留字符必须
>&gt;&#62;&#x3E;保留字符建议
"&quot;&#34;&#x22;保留字符属性值内必须
'&apos;&#39;&#x27;保留字符属性值内建议
©&copy;&#169;&#xA9;标点与符号否
®&reg;&#174;&#xAE;标点与符号否
™&trade;&#8482;&#x2122;标点与符号否
…&hellip;&#8230;&#x2026;标点与符号否
—&mdash;&#8212;&#x2014;标点与符号否
→&rarr;&#8594;&#x2192;箭头否
←&larr;&#8592;&#x2190;箭头否
€&euro;&#8364;&#x20AC;货币否
£&pound;&#163;&#xA3;货币否
¥&yen;&#165;&#xA5;货币否
α&alpha;&#945;&#x3B1;希腊字母否
π&pi;&#960;&#x3C0;希腊字母否
≤&le;&#8804;&#x2264;数学符号否

把两张表连起来看:五个保留字符集中在十进制 34~62 这个 ASCII 区间内,而箭头、货币、数学符号全部落在 128 以上,这正是「UTF-8 页面里后面这些可以直接写字符」的原因——它们不参与标签解析,转义只是为了让源码在任意编码环境下都能安全传输。

结果边界和舍入

  • 码点固定四位十六进制。U+0026、U+00A9 这类不足四位的补前导零;超过四位的(如 ™ 的 U+2122)按实际位数输出,不做截断。
  • 十六进制数字用大写、前缀 x 用小写。输出形如 &#x20AC;。两者大小写都不影响解析,统一是为了复制出去的代码风格一致。
  • 实体名一律带结尾分号。HTML5 允许部分命名实体省略分号,但 XML 与多数模板引擎不允许;本页不输出省略写法。
  • 命中多条时取第一条,其余在提示里列出。包含匹配(查询串 2 个字以上)可能命中多条,卡片填第一条,「命中条目」给出总数,提示区列出前 8 个实体名。
  • 0 命中不静默。错误区写明当前查询串与类别,并提示可以先切成「全部」再查,不会显示一张空卡片。
  • 批量结果逐行独立。某一行未找到不影响其他行;超过 200 行只处理前 200 行并在提示里说明。
  • 本页不做整段转义。HTMLEntity速查表只做「一条记录 ↔ 四种写法」的对照,不替你把一段 HTML 里的 & 与 < 全部转掉,也不修改你的原始文本。

常见问题

为什么我查到了却复制下来变成了一个字符?

因为你复制的是渲染后的结果,而不是源码文本。本页在渲染前会把 & 再转义一次,页面上显示 &amp; 就应该是五个字符的源码文本;如果你选中的区域看起来只有 &,说明选到了「字符」那一格而不是「实体名」那一格。批量结果框里的整行文本是纯文本,最适合整段复制。

十进制和十六进制引用有区别吗?

没有功能区别,&#38; 与 &#x26; 指向同一个码位,任何支持数字字符引用的解析器都认。区别只在来源和可读性:十进制来自 SGML/XML 时代的习惯、兼容性最广;十六进制与 Unicode 码点一致,方便和字符集、字体表对照。HTML5 的示例更常用十六进制,老项目的模板里更常见十进制。

哪些实体是必须转义的?

只有五个预定义实体所在的字符需要认真对待:&amp;、&lt;、&gt;、&quot;、&apos;。其中 & 与 < 在文本内容里必须转义,> 一般可以直写(本页标「建议」),引号只在属性值内部需要转义,且取决于属性值用的是双引号还是单引号。其余 31 条(©、€、→、α 等)在 UTF-8 页面里直接写字符完全没问题,它们只是便利写法。

能不能用 &nbsp; 做中文段落缩进?

不建议。&nbsp; 是 U+00A0 不换行空格,作用是禁止在此处断行,把它连续堆起来做缩进,会让复制出去的正文里混进大量 U+00A0,粘到别的系统、数据库或搜索框里经常变成乱码或匹配失败。中文段落缩进请用 CSS 的 text-indent,需要不断行的地方(如「100 kg」)才用这个实体。

在 script 或 style 里写实体为什么没生效?

因为 <script> 与 <style> 的内容按原始文本解析,HTML 实体不会被解码。在里面写 &amp;,脚本拿到的就是字面的 &amp; 六个字符。要在脚本里表示一个 & 就直接写 &,要拼接 HTML 字符串就交给模板引擎的输出转义去做。

为什么只收录 36 条?我需要更全的表怎么办?

WHATWG 的命名字符引用列表有两千多条,绝大多数(各种语言的字母变体、冷门数学符号)日常用不到,塞进速查表反而找不到重点。本页按「保留字符 + 六类高频符号」挑选 36 条,覆盖绝大多数写页面时的需求。遇到这里没有的字符,直接用十进制或十六进制数字引用即可——数字引用对任意 Unicode 码位都成立,不依赖命名表。

查询框填了却显示 0 条,是哪里错了?

先看类别:类别与查询串是「且」的关系,选了「货币」再查 amp 必然是 0 条,把类别切回「全部」再试。其次看写法:实体名通道会自动去掉首尾的 & 与 ;,所以 amp、&amp;、&amp 三种都能命中;但拼错成 anp 就没有了。数字通道要求纯数字(十六进制可带 x 或 U+ 前缀),写成 #38 不会被识别。

我的查询内容会被上传吗?

不会。整张表和全部检索逻辑都在页面里,查询、批量查询、导出 CSV 都在你的浏览器本地完成,不发起任何网络请求,也不记录历史。导出的 CSV 文件带 BOM,Excel 打开不会乱码;JSON 导出不带 BOM,方便程序读取。

相关工具