HTML Entity Encoder

One input per line. Output is numbered to match the input order.
Pinned tools are listed in your favourites on the home page.Copies a link to this tool that carries your current input, so it opens ready to run.Gives you an iframe snippet for putting this tool on your own site.
Ctrl+Enter Run  · Ctrl+Shift+C Copy  · Esc Clear

Understand HTML Entity Encoder

HTML 实体编码把浏览器会当作标记解析的字符替换成转义码,使它们以文本形式显示。

How it works

编码会把可能突破文本节点或属性的五个字符—— & < > " 和 ' ——改写为 &amp;、&lt;、&gt;、&quot; 和 &#39;。& 最先处理,否则对已转义的字符串再次转义会把 &lt; 变成 &amp;lt;。解码方向相反,它能识别一组常见命名实体,以及全部数字形式:十进制(&#65;)和十六进制(&#x41;)。

When to use it

  • 在页面上展示代码示例,让标签以文本呈现,而不是被解析成标记。
  • 在把用户提供的文本插入不会自动转义的模板之前先做转义。
  • 阅读抓取或邮件收到的、被双重编码的 HTML——读者看到的是 &amp;lt;。
  • 把值放进带引号的属性里,避免一个游离的引号提前结束该属性。

Watch out for

  • 转义这五个字符对文本节点和带引号的属性值是正确的,在其他任何位置都不够。在 script 块内、style 块内、不带引号的属性中,或者在 href 里,规则都不一样,仅靠实体编码挡不住注入。
  • 只能编码一次。把已经转义过的字符串再跑一遍会得到 &amp;lt;,读者看到的是字面文本 &lt;。
  • 解码器覆盖常见命名实体和全部数字实体;HTML5 完整列表中约 2,000 个实体里较冷僻的名称会原样保留。
  • &apos; 属于 XML,不属于 HTML 4。在 HTML 中表示单引号的通用转义是数字形式 &#39;,本工具输出的也是它。

Not the right tool for: 净化那些仍需作为 HTML 继续工作的不可信内容。转义会把标记变成文本;要保留安全标签、去掉危险标签,需要 DOMPurify 这类净化器。

Frequently Asked Questions

为什么要做 HTML 实体编码?

HTML 实体编码把在 HTML 中具有特殊含义的字符(<、>、&、")转换成安全的表示形式。不编码的话,用户提供的内容可能注入 HTML 或 JavaScript,造成 XSS(跨站脚本)漏洞。

命名实体和数字实体有什么区别?

命名实体使用描述性代号,比如 & 写成 &amp;、< 写成 &lt;。数字实体使用十进制(&#38;)或十六进制(&#x26;)的 Unicode 码点。两者在浏览器中渲染出同一个字符。

什么时候需要对引号做 HTML 编码?

把值插入 HTML 属性值时,必须编码双引号(" → &quot;)。在以单引号包裹的属性中,单引号(' → &#39;)也要编码。两者对防止 HTML 注入都很关键。

How to Use HTML Entity Encoder

  1. Paste or type your input in the input area above.
  2. The tool processes your input automatically or click Run.
  3. Copy or download the result using the action buttons.
  4. Use Ctrl+Enter to run quickly from the keyboard.