HTML 转义是把在 HTML 中有特殊含义的字符替换成字符实体,使浏览器把它们当作普通文字显示,而不是解析成标签。下面重点说明原理、规则与易错点。
HTML转义详解
转义函数逐个检查字符,命中特殊字符就替换为对应实体:先替换 &,再替换 < > " '。浏览器渲染时遇到实体会显示为对应字符,但不会把它当作标签或属性边界。
- 文本内容中至少转义 & 和 <
- 双引号包裹的属性值中转义 & 和 ",单引号包裹的转义 '
- 放进 <script> 或 URL 中的数据需要用对应上下文的转义方式,HTML 转义不够
- 不要对已经转义的内容重复转义,否则会显示“&lt;”
示例
输入:https://www.123wen.cn/?q=测试
转义结果:https://www.123wen.cn/?q=测试
说明:替换 & < > " ' 为实体,其余字符不变。
命令行示例
# Python 命令行
python3 -c "import html;print(html.escape('<a href=\"x\">&</a>'))"
# 输出 <a href="x">&</a>
中文的处理
中文字符不需要 HTML 转义;如果页面编码不是 UTF-8,也可以写成数字实体,例如“中”= 中(十六进制 中)。
本站的HTML转义工具可以直接处理,计算在浏览器本地完成,适合快速核对结果。
常见问题
【单引号要转义吗?】属性用单引号包裹时必须转义;为了安全,转义函数通常一并处理。
【HTML 转义能防 XSS 吗?】在 HTML 正文和加引号的属性中可以有效防御;在 <script>、事件属性、URL 等上下文还需要对应的编码。
【中文需要转义吗?】不需要。页面声明 UTF-8 后可直接写中文。
文中示例可以在本站对应工具中验证;处理密码、证件号等敏感数据时,请注意保护隐私。
标签: 文本处理