要显示 & 字符本身,源码中必须写成 &,浏览器先解一层得 & 后停止解析,最终原样呈现;验证须用开发者工具检查 DOM 的 innerHTML 是否为 &。

HTML 中显示 & 字符本身而不是解析为 &
浏览器默认会把 & 解析成 &,所以想在网页里“展示”这个转义字符(即让页面上原样出现 & 四个字符),必须对 & 再做一次转义。
正确做法是把每个需要显示的 & 替换成 & —— 也就是“& 的实体引用”再被一次实体引用。浏览器先解一层,得到 &,再停止解析(因为 & 后面没跟合法命名实体或数字引用),最终文本就原样呈现。
- 想显示文字:
&→ 源码写:& - 想显示文字:
©→ 源码写:© - 错误写法:
&(浏览器直接渲染成&) - 错误写法:
&(这是&的十进制数值引用,结果仍是&)
在 Markdown 或静态站点生成器中输出 & 的注意事项
很多工具(如 Jekyll、Hugo、Typora、VS Code 预览)会在解析阶段提前处理 HTML 实体,导致 & 被双重解码或截断。
实操建议:
- 优先用原始 HTML 写:
&,并确保所在区块不被 Markdown 引擎二次转义(例如放在<code></code> 块里)
- 在 Markdown 行内,有些引擎支持反斜杠逃逸:
\&,但兼容性差,不推荐 - 若用 JavaScript 动态插入,需对字符串做
.replace(/&/g, '&'),注意不是.replace(/&/g, '&')
验证是否成功:查看元素 DOM 和浏览器实际渲染
容易踩的坑是“看着对了”,其实源码错了。比如页面显示 &,但右键「查看网页源代码」发现写的是 &(少了一个 amp;),说明只是巧合渲染出相似效果,实际是 & 被当成普通字符处理了。
可靠验证方式:
- 打开浏览器开发者工具(F12),定位到对应 DOM 元素,看
textContent是否真为& - 检查 Elements 面板中该节点的 innerHTML,确认原始字符串是
& - 避免依赖「页面看起来一样」——
&和&在多数字体下视觉差异极小,但语义和可访问性完全不同
XML / JSX / 模板语法中 & 的处理逻辑差异
不同上下文对 & 的解析规则不同,不能套用 HTML 的经验。
- XML 文档中,
&是唯一允许的&转义形式,&合法,&也合法,但&单独出现是解析错误 - JSX 中,
&会被 React 自动转义,但只在字符串字面量中生效;若你写{'&'},React 渲染结果是&(即四个字符);而{'&'}渲染为& - Vue 模板中,
v-html插值会解析 HTML 实体,所以要显示&,仍得传'&'
&,然后用 DevTools 看 DOM,别信眼睛。











