免费 HTML 实体解码器 — 解码 HTML
在线解码 HTML 实体、还原转义后的 HTML——免费、免注册、100% 在浏览器中运行。把命名、十进制和十六进制引用转回字符;绝不上传。
你的文本在浏览器本地解码,绝不上传、记录或存储。它只留在本设备上。
选项 · 解码选项
什么是 HTML 实体解码?
HTML 实体解码——也叫 HTML 反转义——是把字符引用转换回它们所代表字符的过程。编码把字面 < 替换成实体 < 以便浏览器把它显示为文本,而解码做的是反操作:它扫描字符串中像 <、&、<、> 或 © 这样的引用,把每个替换成实际字符(<、&、<、>、©)。每当你手里有一段以转义形式存储或传输的标记、需要拿回真实文本时——为了阅读、编辑、交给另一个程序,或弄清楚为什么页面渲染出 < 而非 <——你就会运行这个操作。
弄清这个工具做什么是值得的。它把实体解码成字符;它不重新格式化或校验标记。如果你想拿一段转义字符串并恢复其字面字符,这就是合适的工具。要反过来把字符变成实体,请用 HTML 实体编码器;要缩进并整理一段 HTML,请用 HTML 格式化。编码和解码是精确互逆的,因此一段经编码器再经解码器的字符串会原封不动地返回。
解码器必须理解三种引用,它对三者全部处理。命名引用使用定义好的标签(< 表示 <,© 表示 ©,— 表示 —);十进制数字引用以十进制写出 Unicode 码点(< 表示 <);十六进制数字引用以十六进制写出同一码点(< 表示 <),与 Unicode 标准的 U+XXXX 记法对应。一个健壮的解码器以任意混合接受其中任意一种,因为不同的编码器产出不同的形式。下表展示你最常遇到的引用以及每一个解码成的字符:
| 实体(命名) | 十进制 | 十六进制 | 解码为 | |----------------|---------|-----|------------| | < | < | < | < | | > | > | > | > | | & | & | & | & | | " | " | " | " | | ' | ' | ' | ' | | |   |   | (不换行空格) | | © | © | © | © | | ® | ® | ® | ® | | ™ | ™ | ™ | ™ | | € | € | € | € | | £ | £ | £ | £ | | — | — | — | — | | – | – | – | – | | … | … | … | … | | 😀 | 😀 | 😀 | 😀 |
有两种行为让一个周密的解码器与众不同。第一,它从数字引用重建星形平面字符——U+FFFF 以上的任何字符,包括大多数表情符号——而非产生损坏的半字符;😀 会正确变成 😀。第二,它遵循浏览器对那一小组历史上不带结尾分号出现的旧式命名实体的宽松解析,因此 © 2026 仍解码为 © 2026,即便严格的 XML 会拒绝它。本工具两者都做,与广泛使用的 he 库的行为一致,因此其输出与真实浏览器渲染的结果一致。
每个解码器都该附带一句警告:解码后的文本按定义是未转义的。解码是保护页面免受跨站脚本攻击的转义的逆操作,因此一段含有 <script> 标签或事件处理器的解码字符串又一次成了活的、危险的标记。绝不要把不受信任的输入解码后用 innerHTML 插入页面——那会重新打开编码本应封堵的那个漏洞。当你需要原始字符用于阅读、编辑或存储时解码;如果结果将被渲染回 HTML,请先在其目标上下文中重新转义。又因为每个字节都在你的浏览器中处理,你解码的转义字符串——哪怕是一条私有记录或一份未发布草稿——永不跨越网络。对于相邻的转换,URL 编码器 / 解码器 处理百分号编码,Base64 编码 / 解码 处理二进制安全传输。
// Decoding is the inverse of escaping. The classic round-trip:
// < → < > → > & → & " → " ' → '
// Browser — the safest decoder is the platform itself. Use textarea, NOT innerHTML on a live node,
// so the decoded markup is never executed.
function decodeHtml(str) {
const ta = document.createElement('textarea');
ta.innerHTML = str; // the parser resolves entities into text
return ta.value; // .value is plain text — no script runs
}
decodeHtml('<div> & ©'); // → '<div> & ©'
decodeHtml('<>'); // → '<>'
decodeHtml('😀'); // → '😀'
decodeHtml('© 2026'); // → '© 2026' (lenient, no semicolon)
// ---------------------------------------------------------------
// SECURITY: decoded text is unescaped. Never do this with untrusted input:
// el.innerHTML = decodeHtml(userInput); // ❌ reopens the XSS hole
// If the decoded value must be displayed, re-escape it in its destination context first,
// or assign it as text:
// el.textContent = decodeHtml(userInput); // ✅ shown as literal text
// ---------------------------------------------------------------
// Node.js (no DOM) — use a tested library such as he:
// import { decode } from 'he';
// decode('<div> & ©'); // → '<div> & ©' 核心功能
解码命名、十进制和十六进制引用
以任意组合解析完整的 HTML5 命名实体集(<、©、—)、十进制数字引用(<)和十六进制引用(<),完全像浏览器那样——因此无论编码器产出了什么,它都能逆转。
处理表情符号和星形平面字符
U+FFFF 以上的数字引用会被重建为其完整码点,因此 😀 解码为 😀 而非损坏的代理。罕见的 CJK 表意文字和数学符号也能忠实解码。
宽松的旧式实体解析
遵循浏览器对缺少结尾分号的命名实体的向后兼容规则,因此像 © 2026 这样的旧式或草率标记仍解码为 © 2026,而严格解析器会让它损坏。
实时即时解码
输出随你键入更新——没有提交按钮,没有往返延迟。粘贴一大段转义块,恢复出的文本立即出现,随时可复制。
内置实体速查
一张把最常用实体——保留的五个加上 ©、®、™、€、—、 等等——映射到其字符的参考表就在页面上,因此你永远不必去别处查实体。
一键切换到编码器
「切换方向」直接跳转到 HTML 实体编码器以反向操作。编码与解码是精确互逆的,因此你可以让文本无损往返。
100% 私密,仅在浏览器
所有解码都在你的设备上用 JavaScript 完成——无网络请求、无日志、无存储,可在 DevTools → Network 中验证。私有数据库片段、邮件内容和未发布草稿永不离开标签页。
支持 15 种语言
完整界面——标签、说明和指引——已本地化为 15 种语言,因此无论你的团队在哪里工作,工具及其安全建议都清晰明了。
实例演示
解码一组命名实体
<div> & ©
<div> & ©
解码器把每个命名引用解析为它所代表的字符:< 变成 <,> 变成 >,& 变成 &,© 变成版权符号 ©。这是日常情形——把一段以转义形式存储或传输的字符串变回真实字符,以便你阅读、编辑或重新处理这段标记。解码是编码的精确逆操作,因此一段经编码器再变回来的字符串会原封不动地返回。
解码十进制和十六进制数字引用
<>
<>
数字字符引用在两种进制下都有效:< 是码点 60 的十进制形式,即 <;> 是码点 62 的十六进制形式,即 >。解码器可互换处理十进制(&#NNN;)和十六进制(&#xHHH;)引用,把每一个都解析为其 Unicode 字符。这很重要,因为各个编码器在该输出哪种形式上各执一词——有的偏好十进制,有的偏好十六进制——而一个健壮的解码器必须两者都接受。
解码一个缺少分号的旧式实体
© 2026
© 2026
旧版 HTML 允许一小组命名实体不带结尾分号出现,浏览器为了向后兼容仍会解析它们——© 2026 渲染为 © 2026。本解码器遵循同样宽松的解析规则,因此它能从严格解析器会原样保留的草率或旧式标记中恢复出预期字符。如果你在调试一段显示出零散 © 的文本,原因就在于此。
从十六进制引用解码一个表情符号
😀
😀
数字引用不限于基本多文种平面——😀 是码点 U+1F600(咧嘴笑表情 😀)的十六进制引用。解码器能从数字引用正确重建星形平面字符(U+FFFF 以上的任何字符),因此表情符号、罕见的 CJK 表意文字和数学符号都能忠实解码,而不会变成损坏的代理对或替换字形。
解码一段转义后的属性字符串
<a href="x">Tom & Jerry's</a>
<a href="x">Tom & Jerry's</a>
这是编码器旗舰示例的一次完整往返。" 解析为双引号,'(兼容安全的数字撇号)解析为 ',尖括号和与号实体解析为它们的字面字符,精确重建出原始的 Tom & Jerry's。由于解码器以任意组合接受命名、十进制和十六进制引用,无论编码器使用了哪种实体风格,它都能逆转编码器的产物。
如何使用 HTML 实体解码器
- 1
粘贴转义后的字符串
把充满 HTML 实体的文本放入输入框。解码后的字符会随你键入实时更新——没有提交按钮,也不会把任何内容发送到任何地方。
- 2
读取解码结果
命名、十进制和十六进制引用都会自动解析为它们所代表的字符,包括表情符号和其他星形平面码点。无需选择格式——解码器会检测每个引用的类型。
- 3
复制解码后的文本
点击「复制」把恢复出的字符放入剪贴板,随时可粘贴到编辑器、数据库或另一个工具中。「清空」会重置两个面板以处理下一个字符串。
- 4
重新显示不受信任的文本前先重新转义
如果解码后的输出将被渲染回网页,且其中任何内容来自不受信任的来源,请先用编码器再次转义它,以避免重新打开 XSS 漏洞。
- 5
需要编码?切换方向
当你想把原始字符变成实体时,使用「切换方向」切换到 HTML 实体编码器。
常见 HTML 解码错误
用 innerHTML 渲染了解码后的不受信任输入
解码会反转义文本,因此一个解码后的 <script> 标签又是活的标记。通过 innerHTML 插入它会执行它——一个教科书式的 XSS 漏洞。重新转义解码后的不受信任文本,或使用 textContent。
el.innerHTML = decode(userInput) → script runs (XSS)
el.textContent = decode(userInput) → shown as text
文本被二次编码却只解码了一次
二次编码的文本需要两遍解码。把 < 解码一次得到 <,而非 <。再解码一次——并修复管道,让它一开始就绝不二次编码。
&lt; decoded once → < (still an entity)
&lt; decoded twice → <
把 HTML 解码与 URL 或 Base64 解码搞混
实体、百分号编码和 base64 是不同的方案。HTML 解码器不会把 %20 变成空格,也不会解码一个 base64 数据块。为每个编码层使用匹配的工具。
HTML-decode "%3Cdiv%3E" → unchanged, still percent-encoded
URL-decode "%3Cdiv%3E" → <div>
用了一个会漏掉数字或星形引用的正则
一个手写的、只针对命名实体的正则会悄悄跳过 <、> 和像 😀 这样的表情符号,把它们留在输出里。请使用浏览器解析器或一个覆盖所有引用形式、经过测试的库。
regex for &name; only → 😀 left undecoded
full decoder → 😀 becomes 😀
解码后输出显示为乱码
解码 é 会得到真实的 é,但如果接收的页面或文件不是以 UTF-8 提供,该字符会损坏成乱码。在写出解码文本之前,把字符集设为 UTF-8。
decoded é into a Latin-1 file → é mojibake
decoded é into a UTF-8 file → é
假定严格解析而漏掉了旧式实体
严格的 XML 解析器会忽略像 © 这样的无分号实体,把它们留为字面。浏览器会解析它们,因此一个忠实的解码器也必须如此——否则你的输出会与用户所见不一致。
strict parse of "© 2026" → © 2026 literal
lenient parse of "© 2026" → © 2026
谁在使用本工具
- 阅读以转义形式存储的标记
- 从数据库、日志或 JSON 字段里取出了一段被保存为 <div>… 的 HTML 片段?解码它,去看到并编辑真实标记,而不是对着一墙实体眯眼。
- 调试二次编码的文本
- 在本该是 < 的活页面上看到 <?把它粘到这里确认它被二次编码了,解码两次以恢复原文,并把重复转义追溯回你管道里的源头。
- 从 HTML 片段提取纯文本
- 需要从转义后的邮件正文或 CMS 字段里取出人类可读的文本?在你索引、搜索或在别处显示内容之前,解码实体以恢复实际字符。
- 从抓取或导出的数据中恢复字符
- 导出和抓取常常交付带有完整实体的内容。把 &、é 之类变回它们的字符,让数据在进入你自己的系统之前干净整洁。
- 验证编码器的输出能否往返
- 用编码器转义一段字符串后,在这里解码它,确认你能原样拿回原文。一次干净的往返证明你的转义是正确且可逆的。
- 解开一个神秘实体
- 卡在 ™ 或 … 究竟是什么上?把它粘进来读出解码后的字符,或查阅内置速查表——无需记忆实体表。
- 安全地解码旧式标记
- 在处理不一致地使用像 © 或   这种无分号实体的旧 HTML?宽松解码器会像真实浏览器那样恢复出预期字符,因此你的清理与用户实际看到的一致。
解码器如何工作
- 解析全部三种引用形式
- 解码器将命名引用与完整的 HTML5 命名字符表匹配,把十进制引用(&#NNN;)解析为以 10 为底的码点,把十六进制引用(&#xHHH;)解析为以 16 为底的码点。每个都解析为其 Unicode 字符;三种形式在输入上可以互换。
- 星形平面重建
- 码点超过 U+FFFF 的数字引用——大多数表情符号和许多符号——会被转换为正确的代理对,因此字符渲染为单个字形。😀 变成 😀,而非两个损坏的半字符。
- 宽松的旧式实体处理
- 一组定义好的命名实体在历史上不带结尾分号出现,浏览器仍会解析它们。解码器镜像了这一行为——© 2026 产出 © 2026——与真实浏览器的渲染一致,而非严格的 XML 解析器。
- 对纯文本幂等
- 不属于已识别引用的字符,包括输入中已有的原始非 ASCII 文本,都原样通过。解码一段没有实体的字符串会原样返回它,因此这个操作可以安全地在混合内容上运行。
- 解码后的输出是未转义的
- 解码是 XSS 保护性转义的逆操作,所以结果又成了活的标记。工具会把这一点显露出来,以便你不会把不受信任的解码文本用 innerHTML 插入页面——在渲染前先在其目标上下文中重新转义它。
- 浏览器本地,零网络
- 解码在主线程上以 JavaScript 同步运行;没有 API 调用、没有服务器往返、没有持久化。输入永不离开页面,你可以在键入时观察空空的 Network 面板来确认。
HTML 反转义最佳实践
- 绝不直接渲染解码后的不受信任文本
- 解码后的输出是未转义的标记。如果其中任何内容来自用户或外部来源,请在把它插入页面前重新转义,或通过 textContent 而非 innerHTML 赋值。跳过这一步会重新打开转义本应封堵的跨站脚本漏洞。
- 按编码的相反顺序解码
- 一个值可能先被 HTML 编码,再 URL 编码,再 Base64 编码。按它们被应用的相反顺序撤销这些层——并为每一层使用匹配的工具:实体用本工具,百分号编码用 URL 解码器,base64 用 Base64 工具。
- 解码一次,不要反射式地解
- 如果一次解码后仍留有像 < 这样可见的实体,说明输入被二次编码了——再解码一次以恢复原文,然后修复上游管道,让文本精确转义一次。不要盲目循环;要弄清那多出来的一层为何存在。
- 以 UTF-8 提供结果
- 解码数字引用会产生真实的 Unicode 字符——重音、符号、表情符号。请确保接收解码文本的页面、文件或字段是 UTF-8,否则那些恢复出的字符会显示为乱码。
- 在应用代码中优先使用经过测试的库
- 对于一次性转换,本工具很理想;在生产环境中,请用经过充分测试的库解码(Node 中用 he,浏览器自身的解析器通过游离的 textarea),而非手写正则,后者常常漏掉数字引用、星形字符和旧式实体。
常见问题
我解码文本时,文本会被发送到你们的服务器吗?
解码或反转义 HTML 是什么意思?
这个解码器能处理哪些类型的实体?
为什么我的文本显示 < 而不是 <?
解码后的输出可以安全地放回页面吗?
解码能正确处理非 ASCII 字符和表情符号吗?
如何把文本编码回实体?
这和 URL 解码或 Base64 解码是一回事吗?
相关工具
查看所有工具 →Base64 解码与编码工具
编码和格式化
免费在线 Base64 解码编码工具。实时转换,支持中文和 Emoji,100% 浏览器端运行,数据不离开设备,无需注册。
Base64 转图片转换工具
编码和格式化
在浏览器中把 Base64 字符串或 data URI 解码还原为图片。预览、读取尺寸与 MIME,再下载为 PNG、JPG、GIF、SVG。无需上传。
CSV 转 JSON 转换器
编码和格式化
在浏览器中将 CSV 转换为 JSON。支持 RFC 4180、类型推断、表头行、大整数安全。100% 隐私,无需上传。
.env 转 JSON 转换器
编码和格式化
粘贴 .env 文件,立即得到 JSON。数据库密码、API 密钥和令牌绝不离开你的浏览器 — 100% 本地、零上传、免费的 dotenv 解析器。
免费 HTML 实体编码器 — 转义 HTML
编码和格式化
在线编码 HTML 实体、转义特殊字符(< > & " ')——免费、免注册、100% 在浏览器中运行。支持命名、十进制或十六进制输出;绝不上传。
HTML 转 Markdown 转换器
编码和格式化
在浏览器中将 HTML 转换为干净的 Markdown——支持 GFM 表格、任务列表和链接。可选 ATX/Setext 标题及内联或引用链接。非常适合迁移网页内容或喂给 LLM。100% 私密,无需上传。