必须转义的五个基础字符是、&、"、',分别用、&、"、'代替,否则会导致解析错误、内容截断或xss风险;其他符号如©、中文、emoji等在utf-8编码下无需转义。

直接在 HTML 中写 ``、`&`、`"`、`'` 这五个字符,浏览器会误以为是标签或属性的一部分,导致内容错位、截断,甚至引发安全风险。正确做法是用对应的 HTML 实体代替它们。
必须转义的五个基础字符
只有这五个字符在任意 HTML 内容中(包括 `
`、`title` 属性等)都必须转义,否则解析器会出错:
替代 <code>(防止被当成标签开头)-
>替代>(防止被当成标签结尾) -
&替代&(防止触发实体解析,如©被截断) -
"替代"(用于双引号包围的属性值,如title="a "quote"") -
'或'替代'(用于单引号属性值,或避免与 HTML 注释冲突)
属性值里的引号要特别小心
比如表格列头带提示:<th title="User's input: <script>alert(1)</script>"> —— 这里单引号和尖括号都得转,否则属性提前结束,脚本真会执行。
<ul>
<li>双引号属性中出现 <code>",必须写成 "
',建议统一用 '(兼容性更好)element.setAttribute('title', str),它自动处理引号(但不处理 和 <code>&)
代码片段展示别漏掉 &
表格里对比 HTML 代码,例如 <div class="btn"></div>,只转 和 <code>> 不够——class="btn" 里的引号要转,URL 中的 & 也要转,否则 src="img.png?w=100&h=80" 会被解析失败。
- 统一用命名实体:
、<code>>、&、"、' - 避免混用命名和数字编码(如
和 <code>),易读性差且容易出错 - 服务端已转义的数据,前端不要再用
innerHTML二次转义,否则变成<显示为文字“
其他符号一般不用转,但要注意编码
©、®、¥、中文、emoji 等本身没有语法歧义,不需要 HTML 实体转义。但前提是文档声明了 UTF-8 编码(<meta charset="UTF-8">),否则可能显示为方块或问号。
- 版权符 © 可直接写,也可用
©或©,效果一样 - 空格、换行、制表符等空白字符,在 HTML 中默认合并,如需保留用
或 CSSwhite-space: pre - 前端渲染用户输入时,优先用
textContent而非innerHTML,天然防解析、不需手动转义
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











