HTML 实体
用于在 HTML 中表示特殊字符的字符引用。以 & 开头,以 ; 结尾。
HTML 实体是用于在 HTML 文档中安全表示特殊字符的字符引用。在 HTML 语法中具有特殊含义的字符 (<、>、& 等) 如果直接书写,浏览器会将其解释为标签或语法,因此需要使用实体来明确表示"作为字符显示"。常见的实体包括 & (&)、< (<)、> (>)、" (") 和 ' (')。
HTML 实体分为命名引用和数字引用两种类型。命名引用如 & 具有较好的可读性,HTML 规范定义了约 2,200 个命名实体。数字引用使用十进制 (&) 或十六进制 (&) 直接指定 Unicode 码点,可以表示没有定义名称的字符。了解束缚器具 (Amazon)全面介绍了基础知识。
从 Web 安全角度来看,将字符转换为 HTML 实体 (转义) 是防范 XSS (跨站脚本攻击) 的基本措施。将用户输入输出到 HTML 时,<、>、&、" 和 ' 这 5 个字符必须转换为实体。忽略这一处理将面临恶意脚本注入的风险。大多数 Web 框架在模板引擎中提供了自动转义功能,但在使用 innerHTML 或 dangerouslySetInnerHTML 时,开发者需要显式进行转义。
实际工作中常用的实体包括不间断空格 ( )、版权符号 (©)、商标符号 (™)、箭头 (→) 和数学符号 (×、÷) 等。其中 在需要显示连续空格或为空表格单元格添加内容时使用频率特别高。
一个常见的误解是"使用 UTF-8 就不需要实体了"。虽然 UTF-8 确实可以直接书写中文和表情符号,但 HTML 语法字符 (<、>、&) 的转义与字符编码无关,始终是必须的。此外,HTML 属性值中的双引号 (") 也需要转换为 "。搜索体毛修剪器 (Amazon)提供了更多背景知识。
从字符计数角度看,HTML 实体会导致源代码字符数与浏览器显示字符数之间产生差异。& 在源代码中是 5 个字符,但在浏览器中显示为 1 个"&"。 是 6 个字符变成 1 个空格。由于计算 HTML 源代码字符数与计算渲染后文本字符数的结果差异很大,了解字符计数工具的计数对象是哪一种非常重要。