
什么是 HTML 实体
HTML 实体表示在 HTML 中保留或难以输入的字符。实体有三种形式:命名实体(&)、十进制数字实体(&)和十六进制数字实体(&)。三者渲染出相同的字符。

必须转义的字符
以下五个字符如果原样保留会破坏 HTML——转义它们可以防止标记损坏和跨站脚本攻击:
| 字符 | 命名实体 | 数字实体 | 为何转义 |
|---|---|---|---|
| & | & |
& |
开始每个实体 |
| < | < |
< |
开始一个标签 |
| > | > |
> |
结束一个标签 |
| " | " |
" |
结束属性值 |
| ' | ' |
' |
结束属性值(HTML4 中无 ') |

常见符号
| 字符 | 命名实体 | 数字实体 | 名称 |
|---|---|---|---|
| (nbsp) | |
  |
不换行空格 |
| © | © |
© |
版权 |
| ® | ® |
® |
注册商标 |
| ™ | ™ |
™ |
商标 |
| — | — |
— |
长破折号 |
| – | – |
– |
短破折号 |
| … | … |
… |
省略号 |
| € | € |
€ |
欧元 |
| £ | £ |
£ |
英镑 |
| × | × |
× |
乘号 |
| ÷ | ÷ |
÷ |
除号 |
| → | → |
→ |
右箭头 |

何时真正需要编码
- 在 HTML 内容中: 转义
<、>和&,使它们显示为文本而非被解析。 - 在属性值中: 同时转义你使用的引号字符(
"或')。 - 大多数 Unicode 字符不需要实体,如果你的页面是 UTF-8 编码——你可以直接输入
€或→。实体用于保留字符以及无法信任编码的环境。
一个常见错误是双重编码:对已经转义的文本再次转义,将 & 变成 &amp;。在输出时只编码一次。
常见问题
我必须转义的 5 个 HTML 实体是什么?
& (&)、< (<)、> (>)、" (") 和 ' (')。这些是保留字符,可能破坏标记或导致 XSS。
我需要为带重音或 Unicode 字符使用 HTML 实体吗? 如果页面是 UTF-8 编码则不需要——你可以直接输入它们。实体主要用于保留字符和明确的编码。
不换行空格的实体是什么?
(或  )。它渲染一个不会换行或折叠的空格。