跳到主要内容

HTML 实体编解码

转义与还原 HTML 实体,支持命名、十进制、十六进制三种写法

命名实体、十进制、十六进制三种写法任选默认只转义必须的 5 个字符,输出保持可读解码时宽容处理:拼错的实体原样保留并列出附常用实体速查表,含字符与码点对照

编码选项

开启后中文与 emoji 也会被转成实体,输出为纯 ASCII;仅在对接老旧系统时需要

转换结果共 9 个实体

常用实体速查

实体字符码点
&&U+0026
&lt;<U+003C
&gt;>U+003E
&quot;"U+0022
&#39;'U+0027
&nbsp; U+00A0
&copy;©U+00A9
&reg;®U+00AE
&trade;™U+2122
&mdash;—U+2014
&hellip;…U+2026
&times;×U+00D7
&deg;°U+00B0
&euro;€U+20AC
&larr;←U+2190
&rarr;→U+2192

最后更新:2026-10-10

工具介绍

HTML 实体最常见的用途是防止用户输入被当作标签执行 —— 也就是防 XSS。但把所有字符都转义成 &#x4F60; 这种形式既没必要也不可读,实际只有五个字符必须转义。本工具让你在「最小转义」与「全转义」之间自由选择,并在解码时宽容处理拼写错误的实体。

功能特性

最小转义模式

默认只转义 & < > " ' 五个字符 —— 这是安全所需的最小集合。转义后的文本仍然可读,不像全转义那样变成天书。

全部非 ASCII 转义

需要输出纯 ASCII 时(如对接只支持 ASCII 的老旧系统或邮件模板),可开启此选项把中文与 emoji 一并转成实体。

三种实体写法

命名实体(&amp;)、十进制(&#38;)、十六进制(&#x26;)可自由选择。三者等价,不同场景各有习惯,比如十六进制在 CSS 与 SVG 里更常见。

宽容解码

粘贴的文本里常混有拼错的实体(&#xZZ;、不存在的命名实体),这些会被原样保留并单独列出,而不是让整段解码失败或静默丢字符。

按码点处理

emoji 与生僻汉字按 Unicode 码点整体处理 —— 比如 😀 会正确转成 &#128512; 或 &#x1F600;,而不是被拆成两个无效的代理项。

XSS 风险提示

若输入的文本中含有未转义的 HTML 标签,工具会明确警告 —— 直接把它插入页面就是 XSS 漏洞。

怎么用

  1. 1

    选择方向

    把标签安全地写进页面用「编码」;把页面源码里的转义文本读回原文用「解码」。

  2. 2

    按需调整选项

    多数场景保持默认的最小转义即可。只有明确需要纯 ASCII 输出时才开启「转义全部非 ASCII」。

  3. 3

    粘贴文本

    结果实时更新,无需点按钮。解码模式下列在下方的是未能识别的实体片段。

  4. 4

    复制结果

    直接复制即可粘进模板或代码。若提示了 XSS 风险,务必确认这些内容是可信来源,否则应先转义。

参数说明

必要转义字符
共五个:& (实体引导符)、< 与 > (标签边界)、" 与 ' (属性值定界符)。只有这五个字符不转义会造成解析错误或安全问题,其余都可保留原文。
命名实体
形如 &amp;、&lt;、&copy;,用可读的名字表示。优点是直观,缺点是数量有限 —— 中文、emoji 都没有对应的命名实体,只能退回数字形式。
十进制实体
形如 &#20320;,用十进制码点表示任意字符。兼容性最好,所有浏览器与解析器都支持。
十六进制实体
形如 &#x4F60;,用十六进制码点表示。在 CSS、SVG 与 JavaScript 中更常见,因为那些环境习惯用十六进制表示码点。
无效码点
超出 Unicode 范围(大于 U+10FFFF)或落在代理区(U+D800–U+DFFF)的码点不是合法字符,本工具会拒绝解码并原样保留。

适用场景

  • 把用户输入安全地展示在页面上(防 XSS)
  • 把转义过的 HTML 源码还原成可读内容
  • 为老旧系统生成纯 ASCII 的文本输出
  • 在 HTML 里插入 ©、™、→ 等特殊符号
  • 查看一段实体文本背后到底是什么字符
  • 调试页面显示乱码或标点错位的问题
  • 确认某个实体拼写是否正确

常见问题

关于这个工具,你可能会问

什么时候必须转义 HTML 实体?

只要把不可信内容插入 HTML 就需要。最常见的是 &(否则 AT&T 会被当成实体前缀)、< 与 >(否则会被解析成标签,这是 XSS 的主要入口)、以及引号(否则在属性值里会提前闭合)。其余字符转义与否只影响可读性,不影响安全。

编码和转义是一回事吗?

在 HTML 语境下基本是一回事,都是把特殊字符换成实体形式。但要注意实体**不是**用于防 SQL 注入的手段 —— 数据库转义要用参数化查询。混用这两者是很危险的做法。

命名实体和数字实体该用哪个?

功能上等价,选哪个看场景。命名实体(&amp;)可读性好,适合手写模板;数字实体(&#38; 或 &#x26;)能表示任意字符,适合程序生成。需要注意的是中文与 emoji 没有命名实体,只能用数字形式。

为什么 &nbsp; 看起来像普通空格但不是?

&nbsp; 是不换行空格(U+00A0),它的作用恰恰是**阻止**在此处换行,同时它在视觉上比普通空格略宽。因为看起来一样,它是排版问题的常见来源 —— 从网页复制文本时经常带进来,可以用本工具的速查表确认码点是 160 而不是 32。

转义后还能被浏览器正确解析吗?

能。实体是 HTML 规范的一部分,浏览器会先把它们解码成对应字符,再交给渲染引擎。对浏览器而言,&lt;div&gt; 显示的就是文本 <div>,不会被当成标签。

解码时遇到拼错的实体会怎样?

本工具会把无法识别的片段**原样保留**,并在结果下方单独列出,而不是丢弃或替换成问号。这样你能立刻看到问题出在哪里,而不用逐字符比对找出内容为什么少了。

为什么开启全转义后中文变成了数字?

因为中文没有命名实体 —— HTML 规范只定义了约 2000 个命名实体,主要覆盖西欧字符与数学符号,中文、日文、韩文以及 emoji 都不在其中,只能退回数字实体形式。这是规范限制,不是工具的问题。

输入内容会被上传吗?

不会。编码与解码全部由浏览器本地完成,不产生网络请求。即使处理的是含敏感信息的模板内容,也不会离开你的设备。