页面源码里的 < 和 就是 HTML 实体。为什么不能直接打 <?哪些字符必须转义?
HTML 实体以 & 开头、分号结尾,用名称或编号表示特殊字符。如 < 表示小于号、> 表示大于号、& 表示与号、 表示不换行空格、© 表示版权符号。
小于号 < 和大于号 > 会与标签混淆,与号 & 会与实体开头混淆,这三者必须转义。属性值内的引号也需转义。
用户输入直接插入页面时,不转义会导致 XSS 攻击:攻击者输入 <script> 标签即可执行恶意代码。所有用户可控内容输出到 HTML 前必须转义。
打开 HTML 实体转换工具,粘贴内容一键转义为实体编码(可防止被浏览器当标签解析),或把实体解码回原文。
常用字符有命名实体,其他可用 &#数字; 形式按 Unicode 码位转义,任何字符都能表示。
影响可忽略。浏览器解析实体开销极小,无需担心性能。
nbsp 是不换行空格,多个连续 nbsp 不会合并成一个,常用于控制排版间距。