← 返回首页

HTML 实体编解码

输入文本

结果

常用 HTML 实体参考

字符实体描述
<&lt;小于号
>&gt;大于号
&&amp;和号
"&quot;双引号
 &nbsp;不换行空格
©&copy;版权符号
¥&yen;人民币符号

HTML 实体编解码 是什么?

HTML 实体编解码工具,把 &amp;lt; 这类实体和 < 这类原始字符互相转换。写博客贴代码片段、往模板里塞用户输入、调试接口返回的转义字符串时都会用到。比如你从数据库导出评论,看到 &amp;#x4F60;&amp;#x597D; 这种十六进制实体,粘进来点解码就能还原成"你好";反过来,要把 <script>alert(1)</script> 安全地显示在页面上,编码后变成 &amp;lt;script&amp;gt;alert(1)&amp;lt;/script&amp;gt;,浏览器只当文本渲染,不会执行。工具覆盖命名实体(&amp;amp;、&amp;nbsp;、&amp;copy;)、十进制(&amp;#169;)和十六进制(&amp;#xA9;)三种写法,全部在浏览器本地算完,不往服务器发一个字符。

使用步骤

  1. 在输入框粘贴待处理文本,例如 <a href="x">A&B</a>,或实体串 &amp;lt;p&amp;gt;你好&amp;lt;/p&amp;gt;。
  2. 选择模式:编码把 & < > " ' 转成实体,解码把 &amp;lt; &amp;#60; &amp;#x3C; 还原成字符。
  3. 按需勾选"仅编码特殊字符"或"全部非 ASCII",后者会把"你好"输出为 &amp;#x4F60;&amp;#x597D;。
  4. 点转换按钮,结果实时出现在输出框,可直接 Ctrl+A 复制或点复制按钮。
  5. 用"交换"把输出塞回输入框做反向验证,确认 &amp;amp;lt; 解码一次得到 &amp;lt; 而非 <。

对比:用它还是手工做?

对比维度本工具手工/替代做法
处理 1 万字符耗时约 15-40 毫秒,浏览器本地完成手工查找替换,按 200 处计算约 10-20 分钟
命名实体覆盖2231 个 HTML5 实体全量多数人只记得 &amp;nbsp; &amp;lt; &amp;gt; &amp;amp; 等不到 10 个
十六进制支持支持 &amp;#x4F60; 形式,大小写 x 均可记事本无法识别,需手算码点再查表
双重转义判断默认只解一层,与浏览器解析一致容易连点两次解码,把 &amp;lt; 变成 < 引入 XSS
数据流向全程在浏览器内存,关闭页面即清空在线转换站可能把内容 POST 到服务端日志

常见问题

&amp;nbsp; 解码后是什么?

是 U+00A0 不换行空格,不是普通空格 U+0020。两者视觉宽度接近,但 U+00A0 不会在换行处断开,且用 JS 的 trim() 去不掉。解码后如果复制到代码里,建议手动替换成普通空格,否则可能触发 ESLint 的 no-irregular-whitespace 报错。

为什么 &amp;amp;lt; 解一次还是 &amp;lt;?

因为这是双重转义。&amp;amp;lt; 的第一层 &amp;amp; 代表 &,整体代表字符串 &lt;。解码一次得到 &lt;,再解一次才得到 <。工具默认只解一层,这是正确行为——浏览器解析 HTML 也只解一层,多解反而会把用户输入的 &amp;lt; 变成真实标签,造成 XSS。

编码后体积会变大多少?

取决于字符。& 编成 &amp;amp; 是 1 变 5 字节,< 编成 &amp;lt; 是 1 变 4 字节,中文"你"编成 &amp;#x4F60; 是 3 变 8 字节。最坏情况全角标点密集的文本可能膨胀到原体积的 2.7 倍左右。如果只是防 XSS,用 &lt; &gt; &amp; &quot; 四个命名实体即可,不必全量编码。

支持哪些命名实体?

覆盖 HTML5 规范里的 2231 个命名实体,包括 &amp;copy; &amp;reg; &amp;trade; &amp;mdash; &amp;hellip; &amp;alpha; &amp;beta; &amp;sum; &amp;infin; 等。注意 HTML5 允许省略分号(如 &amp;copy 也能识别),但本工具解码时要求分号结尾,避免把 &amp;copycat 误判成 &amp;copy + cat。

解码会执行脚本吗?

不会。工具只做字符串替换,输出的是纯文本,不写入 DOM 的 innerHTML,也不创建 script 标签。即使输入 &amp;lt;img src=x onerror=alert(1)&amp;gt;,解码后得到的 <img src=x onerror=alert(1)> 也只是显示在输出框里的文字,不会触发任何网络请求或 JS 执行。

适用范围:HTML5 命名实体、十进制 &amp;#NNN; 与十六进制 &amp;#xHHHH; 实体,码点范围 U+0000 到 U+10FFFF。不处理 XML 自定义 DTD 实体,也不解析 URL 编码(那是 %XX,请用 base64 或 char-frequency 类工具)。所有转换在浏览器内存完成,不上传、不落盘、不写 cookie,关闭标签页数据即消失。

浙ICP备2026073450号