HTML 转义/反转义

将 &、<、>、"、' 等特殊字符转换为 HTML 实体(转义),或将实体还原为原始字符(反转义)。适用于防范 XSS 攻击及在 HTML 中嵌入文本。

常用命名 HTML 实体一览

字符 命名实体 数字字符引用 说明
& &amp; &#38; 和号(表示"and"的符号)
< &lt; &#60; 小于号(与 HTML 标签的起始字符相同)
> &gt; &#62; 大于号(与 HTML 标签的结束字符相同)
" &quot; &#34; 双引号(属性值的分隔符)
' &apos; &#39; 单引号(属性值的分隔符)
  &nbsp; &#160; 不换行空格(不会触发换行的空白字符)
© &copy; &#169; 版权符号
® &reg; &#174; 注册商标符号
&trade; &#8482; 商标符号
&euro; &#8364; 欧元符号
¥ &yen; &#165; 日元符号
¢ &cent; &#162; 美分符号

使用技巧

  • HTML 转义是防范 XSS(跨站脚本攻击)的基础手段。在将用户输入嵌入 HTML 之前,务必先进行转义处理。
  • & 必须最先转义。如果先转换其他字符,新生成的 &amp; 中的 & 会被再次转义,造成重复转义。
  • 在属性值中嵌入字符串时,除了 "(双引号)外,最好连 '(单引号)也一并转义,这样更安全。
  • 本工具支持将十进制数字引用&#38;)、十六进制数字引用&#x26;)以及常用命名实体(如 &amp;)反转义还原。
  • 许多模板引擎(Blade、JSX、Vue 等)在插入变量时会自动进行 HTML 转义,但如果使用 {!! !!} 或 v-html 这类"原始 HTML 输出"语法,就需要自行手动转义。

常见问题

&lt;&gt;&amp; 这三个字符会被 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 的初期规范中,&lt;&gt;&amp; 等基本命名实体就已经被定义。

在 Unicode 尚未普及的年代,命名实体最初被广泛用于在纯 ASCII 环境下显示印刷用的特殊符号,例如版权符号 &copy;、注册商标符号 &reg; 以及各种希腊字母。HTML5 规范最终定义了超过 2000 种命名实体,甚至涵盖了对勾符号、音符符号等冷门字符。

如今随着 UTF-8 编码的普及,为避免乱码而使用字符引用的必要性已大大降低。但 <、>、& 这三个字符至今仍必须转义,原因完全不同:它们对 HTML 解析器而言具有特殊的语法含义(分别代表标签的开始、结束以及实体的开始),一旦忘记转义,就可能直接导致页面布局错乱或引发XSS 漏洞