必须用字符实体转义,因为直接写会被浏览器解析为html标签,导致内容丢失、布局错乱或xss风险;最通用安全,严格区分大小写,所有浏览器都支持,用户输入等动态内容须在插入dom前转义。

直接在 HTML 里写 或 <code>>,浏览器会当成标签解析,导致内容消失、布局错乱,甚至引发 XSS 风险。必须用字符实体转义。
为什么不能直接写 和 <code>>
HTML 解析器遇到 就开始找匹配的 <code>> 构成标签,中间内容若不符合标签语法,可能被静默丢弃或触发错误渲染。比如这段代码:
<p>5 3</p>
如果不转义,5 3 会被解析为:5 (截断)、and 10 (再截断),最终页面只显示“5 and 10”。
文章转信息图。将文章/笔记转化为手机可读的 HTML 信息图,自动匹配视觉风格。触发场景:文章转图、笔记转图、信息图、转小红书图、做张图、可视化这篇文章、文生图。
- 实体名
和 <code>>是最通用、最安全的选择 - 实体编号
和 <code>>兼容性更好,但可读性差 - 别用
<或>(缺分号)——多数浏览器会容错,但 W3C 标准不合法,某些严格模式(如 XML、XHTML)直接报错
与 <code>> 的拼写和大小写敏感问题
实体名称严格区分大小写: 有效,<code>< 或 < 无效;> 有效,> 不行。
-
lt= less than,gt= greater than —— 记住首字母缩写即可 - 别和数学符号混淆:不是
<t;或&ggt;,没有重复字母 - IE 旧版不支持
',但和 <code>>所有浏览器都支持
在模板、JS 字符串、后端输出中如何安全插入
前端模板(如 Vue/React)通常自动转义,但手动拼接 HTML 字符串时极易翻车;后端(PHP/Python/Node)若直接 echo 或 res.send 原始字符串,也必须提前转义。
- 纯 HTML 文件:直接写
和 <code>> - JS 字符串中拼接 HTML:
element.innerHTML = "x z";(注意还要转义&为&) - PHP 中用
htmlspecialchars($str, ENT_NOQUOTES, 'UTF-8'),它默认处理、<code>>、&,但不处理单双引号(ENT_NOQUOTES) - 避免手写正则替换
/g →>,容易漏掉嵌套或干扰已有实体
真正容易被忽略的是:当内容来自用户输入、数据库或 API 响应时, 和 <code>> 必须作为「最后一步」在插入 DOM 前完成转义——早了可能被二次编码,晚了就已执行恶意脚本。










