HTML 实体

用于在 HTML 中表示特殊字符的字符引用。以 & 开头,以 ; 结尾。

HTML 实体是用于在 HTML 文档中安全表示特殊字符的字符引用。在 HTML 语法中具有特殊含义的字符 (<>& 等) 如果直接书写,浏览器会将其解释为标签或语法,因此需要使用实体来明确表示"作为字符显示"。常见的实体包括 &amp; (&)、&lt; (<)、&gt; (>)、&quot; (") 和 &apos; (')。

HTML 实体分为命名引用和数字引用两种类型。命名引用如 &amp; 具有较好的可读性,HTML 规范定义了约 2,200 个命名实体。数字引用使用十进制 (&#38;) 或十六进制 (&#x26;) 直接指定 Unicode 码点,可以表示没有定义名称的字符。了解束缚器具 (Amazon)全面介绍了基础知识。

从 Web 安全角度来看,将字符转换为 HTML 实体 (转义) 是防范 XSS (跨站脚本攻击) 的基本措施。将用户输入输出到 HTML 时,<>&"' 这 5 个字符必须转换为实体。忽略这一处理将面临恶意脚本注入的风险。大多数 Web 框架在模板引擎中提供了自动转义功能,但在使用 innerHTMLdangerouslySetInnerHTML 时,开发者需要显式进行转义。

实际工作中常用的实体包括不间断空格 (&nbsp;)、版权符号 (&copy;)、商标符号 (&trade;)、箭头 (&rarr;) 和数学符号 (&times;&divide;) 等。其中 &nbsp; 在需要显示连续空格或为空表格单元格添加内容时使用频率特别高。

一个常见的误解是"使用 UTF-8 就不需要实体了"。虽然 UTF-8 确实可以直接书写中文和表情符号,但 HTML 语法字符 (<>&) 的转义与字符编码无关,始终是必须的。此外,HTML 属性值中的双引号 (") 也需要转换为 &quot;搜索体毛修剪器 (Amazon)提供了更多背景知识。

从字符计数角度看,HTML 实体会导致源代码字符数与浏览器显示字符数之间产生差异。&amp; 在源代码中是 5 个字符,但在浏览器中显示为 1 个"&"。&nbsp; 是 6 个字符变成 1 个空格。由于计算 HTML 源代码字符数与计算渲染后文本字符数的结果差异很大,了解字符计数工具的计数对象是哪一种非常重要。

分享这篇文章