HTML 实体编解码

HTML 实体与字符互转,支持命名 / 十进制 / 十六进制。

什么是HTML 实体编解码?

HTML 实体是在 HTML 文档中表示特殊字符(如 < > & 引号)或某些不便直接输入字符的转义写法,分为命名实体(如 &amp;)、十进制数字实体(如 &#38;)和十六进制数字实体(如 &#x26;)三种形式。

为什么使用HTML 实体编解码?

在 HTML 中直接写 < 会被浏览器解析成标签起始符,必须转义成 &lt; 才能正常显示为文本;富文本编辑器保存用户输入、模板引擎渲染动态内容、防止 XSS 注入时都需要对特殊字符做实体编码。 与 URL 编码的区别在于:HTML 实体只处理在 HTML 语法中有特殊含义的字符,URL 编码处理的是 URL 传输中的保留字符和非 ASCII 字符,两者应用场景不同,不能互相替代。

使用示例

编码含特殊字符的文本

输入 <div>你好&"世界"</div>,编码后得到 &lt;div&gt;你好&amp;&quot;世界&quot;&lt;/div&gt;,这样粘贴进 HTML 页面就不会被误解析成标签。

解码命名实体

输入 &copy; 2024 &amp; Co.,解码后得到 © 2024 & Co.,还原出原始可读文本。

十六进制与十进制形式对照

字符 & 可以写成命名实体 &amp;,也可以写成十进制 &#38; 或十六进制 &#x26;,三者在浏览器渲染结果上完全等价。

使用提示

浏览器本地转换,数据不上传;对任何要展示到页面上的用户输入内容,都应该做实体编码后再插入 DOM,避免被浏览器当作标签解析而引发显示异常或安全问题。

常见问题

「仅转特殊字符」和「转所有非ASCII」有什么区别?
「仅转特殊字符」只转义 & < > " ' 这几个 HTML 中有特殊含义的字符;「转所有非ASCII为&#十进制」在此基础上,还会把中文、emoji 等非 ASCII 字符转成 &#数字; 形式的数字实体,兼容性更好。
解码支持哪些实体格式?
支持命名实体(如 &amp; &nbsp; &copy;)、十进制数字实体(如 &#38;)和十六进制数字实体(如 &#x26;),解码借助浏览器原生解析,覆盖全部标准 HTML 实体。
数据会上传吗?
不会。编码解码全部在浏览器本地完成,不发起任何网络请求。
中文字符需要转义吗?
中文本身不属于 HTML 中有特殊语法含义的字符,正常情况下不需要转义,除非业务要求对所有非 ASCII 字符统一做数字实体编码。
为什么做实体编码可以防 XSS?
把用户输入中的 <script> 等标签字符转义成 &lt;script&gt; 后,浏览器会把它当作普通文本显示,而不会当作可执行的标签或脚本解析,从而避免恶意代码被执行。
和 URL 编码有什么区别?
HTML 实体解决的是字符在 HTML 标签语法中被误解析的问题,URL 编码解决的是字符在 URL 传输中不被支持或有歧义的问题,二者用途和编码规则完全不同。
命名实体和数字实体应该用哪种?
常见符号(&amp; &lt; &gt; &quot; &nbsp; 等)用命名实体可读性更好;不常见的符号建议使用数字实体,兼容性更有保障。

相关工具

相关教程

← 返回工具箱· 数据均在浏览器本地处理,不上传服务器。