html中未转义的会被浏览器解析为标签,导致内容截断或js异常;必须用<和>转义,符合w3c标准,兼容所有环境且易读安全。

HTML 中直接写 和 <code>> 会出问题
浏览器会把未转义的 和 <code>> 当作标签起始/结束符,导致文本被截断、样式错乱,甚至 JS 执行异常。比如写 if (x 5),浏览器可能只渲染出 if (x,后面全被当成未闭合标签忽略。
这不是编码问题,是 HTML 解析规则本身决定的 —— 所有非标签内容里的 和 <code>> 都必须转义。
用 < 和 > 是最稳妥的方案
这是 W3C 标准实体,兼容所有 HTML 版本(包括 XHTML),无需额外声明 DOCTYPE 或 charset,且在纯文本环境(如 Markdown 渲染器、邮件模板)里也基本能正确识别。
→ 写成 <code><(注意:是&开头,不是&)-
>→ 写成> - 连续多个符号要逐个转义:
a 不是 <code>a < b < c(漏了分号) - 别和
(十进制)或 <code>(十六进制)混用 —— 实体名更易读、少出错
在 JavaScript 字符串或模板中要双重转义
如果是在 JS 里拼 HTML 字符串(比如 element.innerHTML = "x ),得确保字符串字面量本身不被 JS 解析破坏:
- JS 引号内直接写
"<"没问题,但别写成" —— 这会触发 ESLint 报错或构建工具警告 - 用模板字面量时同样要转义:
`value is ${val} < 100` - React/Vue 等框架里,JSX/模板语法默认对插值做 HTML 转义,但外层静态文本仍需手动写
< - 服务端渲染(如 Node.js + EJS)同理:变量输出函数(
)通常不自动转义,得自己套escape()或写<
LaTeX 或 MathML 场景下不要用 LT/GT 实体
如果页面里用了 MathJax、KaTeX 或原生 <math></math>,大于小于号应保持原始符号 、<code>>,由数学渲染引擎处理。混用 < 反而会导致公式解析失败或显示为文字“
典型错误:在 $$a < b$$ 里用实体,结果渲染出字母 a、空格、“
区分清楚上下文:普通段落文本用 </>;数学块/行内公式里一律用原始符号,并确保该区域不被 HTML 解析器提前截断(比如用 <pre class="brush:php;toolbar:false;"><code></code> 包裹或延迟加载 MathJax)。</pre>











