首页/开发/正则与编码速查/HTML 实体引用的写法与含义

HTML 实体引用的写法与含义

HTML 实体引用用 ASCII 表达其他字符:命名形式(&copy;)、十进制(&#169;)、十六进制(&#xA9;);核心用途是把 & < > 与引号转义成不参与标签解析的形式,避免内容被当成标记。

正则与编码速查开发更新于 2026-10-17
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌​​‌​‌‌‌‌​‌‌‌​​‌​​‌‌​​‌​‌​‌‌​​‌‌‌​‌‌​​‌​‌​‌‌‌‌​​​​​‌​‌‌‌‌​‌‌​‌​​​​‌‌‌​‌​​​‌‌​‌‌​‌​‌‌​‌‌​​​​‌​‌‌​‌​‌‌​​‌​‌​‌‌​‌‌‌​​‌‌‌​‌​​​‌‌​‌​​‌​‌‌‌​‌​​​‌‌‌‌​​‌​​‌​‌‌​‌​‌‌​​​‌​​‌‌​​​​‌​‌‌‌​​‌‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌​‌​​​​‌‌‌​‌​​​‌‌​‌‌​‌​‌‌​‌‌​​

三种写法与用途

HTML 实体引用有三种形式:命名实体(以名字引用,如 &copy;)、十进制数字实体(&#169;)与十六进制数字实体(&#xA9;)。它们的用途分两类:一是转义语法字符,让用户内容里的 & 与尖括号不被解析成标记或属性边界;二是表示键盘不便输入的符号。解析时以 & 开头、以分号结束,现代写法必须带分号;遇到无法识别的实体名,HTML5 规定按字面文本处理而不是报错,这也让「实体写错」常常静默通过。

基本信息

命名形式&copy; 表示版权符号
十进制形式&#169; 表示同一字符
十六进制形式&#xA9; 表示同一字符
必须转义& 与 < 在文本内容中;属性值中还需处理引号
结束标记以分号结束,现代写法不可省略
未知实体HTML5 按字面文本处理,不报错

典型使用场景

  • 输出用户内容:把用户输入的尖括号与 & 转义后再放入页面
  • 模板渲染:模板引擎默认自动转义,明确场景下需要手动控制
  • 邮件与富文本:邮件客户端对实体支持不一,需要选择保守写法
  • XML 与 SVG:只支持少量内置命名实体,其余需数字形式
  • 调试显示:需要在页面上原样展示 HTML 代码时用实体转义

写法与转义示例

写法与转义示例
# Python 标准库的转义与反转义
python -c "import html; print(html.escape('<a href=\"x\">&</a>'))"     # &lt;a href=&quot;x&quot;&gt;&amp;&lt;/a&gt;
python -c "import html; print(html.unescape('&lt;p&gt;1 &amp; 2&lt;/p&gt;'))"   # <p>1 & 2</p>
# 三种形式等价
python -c "import html; print(html.unescape('&copy;'), html.unescape('&#169;'), html.unescape('&#xA9;'))"
# 非断行空格是单独字符,不是普通空格
python -c "import html; print(repr(html.unescape('&nbsp;')), ord(html.unescape('&nbsp;')))"   # '\xa0' 160

常用实体对照

字符命名实体数字实体
&&amp;&#38;
<&lt;&#60;
>&gt;&#62;
"&quot;&#34;
'&apos;(HTML5 起支持)&#39;
非断行空格&nbsp;&#160;
版权符号&copy;&#169;
实体在页面中是「先解析后展示」:浏览器把 &amp;lt; 解析为文本 &lt; 并显示出来,而不是显示尖括号。若要显示「<」本身,正确写法是 &lt;;写 &amp;lt; 会显示出 &lt; 这四个字符,这是双重转义的典型表现。
转义不是可选装饰而是安全边界:把未转义的用户内容插入页面,等于允许其注入标签与脚本。任何输出到 HTML 的内容都必须经过与上下文匹配的转义,属性值还必须用引号包裹。
&nbsp; 是不可断行空格(U+00A0),与普通空格(U+0020)不同:用它做排版会让字符串比较、搜索与正则匹配失效,也影响换行行为。仅在确实需要禁止断行时使用。

易错点

  • 只转义尖括号不转义 &:原有的 & 与转义后的实体混淆,输出内容错误且可能引发布局问题 → 按顺序先转 & 再转其他字符
  • 重复转义:显示成 &lt; 而不是 <,排查时难以看出多转了一次 → 只在输出边界转义一次,避免中间层再处理
  • 把 &nbsp; 当普通空格使用:比较、检索与正则全部失配 → 使用普通空格,必要时用样式控制换行
  • 在 XML 中使用 HTML 独有命名实体:解析报未定义实体 → 改用数字实体或声明实体
  • 省略实体末尾分号:与后续字符连读被解析成另一实体,内容被悄悄改变 → 一律写全分号

数据来源与参考

  • WHATWG HTML 标准:字符引用(Character references)
  • XML 1.0 规范:预定义实体与字符引用
  • W3C:HTML 实体与字符引用说明

整理校对:其其网ICT文档中心 · 本页地址:docs.qiqicto.com/regex/html-entity-basics.html

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌​​‌​‌‌‌‌​‌‌‌​​‌​​‌‌​​‌​‌​‌‌​​‌‌‌​‌‌​​‌​‌​‌‌‌‌​​​​​‌​‌‌‌‌​‌‌​‌​​​​‌‌‌​‌​​​‌‌​‌‌​‌​‌‌​‌‌​​​​‌​‌‌​‌​‌‌​​‌​‌​‌‌​‌‌‌​​‌‌‌​‌​​​‌‌​‌​​‌​‌‌‌​‌​​​‌‌‌‌​​‌​​‌​‌‌​‌​‌‌​​​‌​​‌‌​​​​‌​‌‌‌​​‌‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌​‌​​​​‌‌‌​‌​​​‌‌​‌‌​‌​‌‌​‌‌​​