第 1 课
什么是 HTML Entity
理解字符引用以及 HTML 为何需要转义。
HTML Entity(更准确地说是 字符引用)是一种用转义序列表示字符的方式,而不是直接写入字面字符。最常见的形式以 & 开头、以 ; 结尾,例如 < 表示 <,© 表示 ©。
HTML 为什么需要转义
HTML 用 < 和 > 界定标签。如果未经转义就把 <script> 插入页面,浏览器可能将其解析为标记。转义会把 < 变成 <,让浏览器显示字符本身,而不是开启一个新标签。
同样适用于:
- 和号(
&)——必须先转义,否则©可能被错误解析 - 属性中的引号——属性值里的
"和' - 特殊符号——©、不换行空格、数学符号等
实体不是加密
编码不会隐藏含义。任何人都可以把 Tom & Jerry 解码回 Tom & Jerry。目标是 安全插入 HTML,而不是保密。
开发中常见来源
- CMS 导出时为存储或邮件模板而转义的内容
- 服务端模板引擎的自动转义输出
- JSON 或日志字段里预转义的片段
- 从 Word 或富文本编辑器复制来的智能引号与符号
解码 vs 渲染
解码实体字符串得到的是 文本。把这段文本插入 HTML 页面是另一步操作。不要假设「解码」就等于「可以安全 innerHTML」。