HTML 转义/反转义
将 &、<、>、"、' 等特殊字符转换为 HTML 实体(转义),或将实体还原为原始字符(反转义)。适用于防范 XSS 攻击及在 HTML 中嵌入文本。
常用命名 HTML 实体一览
| 字符 | 命名实体 | 数字字符引用 | 说明 |
|---|---|---|---|
| & | & | & | 和号(表示"and"的符号) |
| < | < | < | 小于号(与 HTML 标签的起始字符相同) |
| > | > | > | 大于号(与 HTML 标签的结束字符相同) |
| " | " | " | 双引号(属性值的分隔符) |
| ' | ' | ' | 单引号(属性值的分隔符) |
| |   | 不换行空格(不会触发换行的空白字符) | |
| © | © | © | 版权符号 |
| ® | ® | ® | 注册商标符号 |
| ™ | ™ | ™ | 商标符号 |
| € | € | € | 欧元符号 |
| ¥ | ¥ | ¥ | 日元符号 |
| ¢ | ¢ | ¢ | 美分符号 |
使用技巧
- HTML 转义是防范 XSS(跨站脚本攻击)的基础手段。在将用户输入嵌入 HTML 之前,务必先进行转义处理。
&必须最先转义。如果先转换其他字符,新生成的&中的&会被再次转义,造成重复转义。- 在属性值中嵌入字符串时,除了
"(双引号)外,最好连'(单引号)也一并转义,这样更安全。 - 本工具支持将十进制数字引用(
&)、十六进制数字引用(&)以及常用命名实体(如&)反转义还原。 - 许多模板引擎(Blade、JSX、Vue 等)在插入变量时会自动进行 HTML 转义,但如果使用
{!! !!}或 v-html 这类"原始 HTML 输出"语法,就需要自行手动转义。
常见问题
<、>、& 这三个字符会被 HTML 解析器当作语法的一部分来解释。如果忘记转义,浏览器可能会误认为是标签的开始或结束,从而导致页面布局错乱,甚至引发XSS(恶意脚本注入)攻击。URL 编码(百分号编码)用于在 URL 中安全地表示特殊字符,而 HTML 转义则是为了防止字符在 HTML 文档中被误认为标签。两者用途不同,如果表单的值既要作为 URL 参数又要显示在 HTML 中,有时需要同时进行两种转换。
不会。所有转换处理都在浏览器内通过 JavaScript 完成,您输入的文本不会被发送到 toolbase.cc 的服务器。
不会。本工具只转义
&、<、>、"、' 这 5 个字符。表情符号和中文等非 ASCII 字符在现代 UTF-8 环境下可以直接安全显示,无需转换。
闲话 ― 继承自 SGML 的"字符引用"机制
HTML 实体(字符引用)的起源可以追溯到 HTML 的前身 SGML(标准通用标记语言)。1986 年标准化的 SGML 就已经具备了"字符引用"机制,用于在正文中使用标签分隔符 < 本身。HTML 几乎原封不动地继承了这一机制,早在 20 世纪 90 年代 HTML 的初期规范中,<、>、& 等基本命名实体就已经被定义。
在 Unicode 尚未普及的年代,命名实体最初被广泛用于在纯 ASCII 环境下显示印刷用的特殊符号,例如版权符号 ©、注册商标符号 ® 以及各种希腊字母。HTML5 规范最终定义了超过 2000 种命名实体,甚至涵盖了对勾符号、音符符号等冷门字符。
如今随着 UTF-8 编码的普及,为避免乱码而使用字符引用的必要性已大大降低。但 <、>、& 这三个字符至今仍必须转义,原因完全不同:它们对 HTML 解析器而言具有特殊的语法含义(分别代表标签的开始、结束以及实体的开始),一旦忘记转义,就可能直接导致页面布局错乱或引发XSS 漏洞。