HTML 编码解码
粘贴普通文本、模板片段、属性值或实体字符串,即可在浏览器内完成 HTML 实体编码与解码。编码模式可以转义尖括号、引号、单引号和与号等会影响 HTML 解析的字符,也可以使用 extensive HTML5 实体模式生成更广泛的实体输出。解码模式会还原命名实体、十进制数字实体和十六进制数字实体,便于检查富文本、爬虫结果、日志字段和重复编码问题。
- 编码尖括号、引号、单引号和与号,减少文本被浏览器当成标签或属性结构解析的机会
- 日常 HTML 安全展示可选择特殊字符转义,需要更广泛兼容性时可选择 extensive HTML5 实体输出
- 解码命名实体、十进制数字实体和十六进制数字实体,未知实体保持原样
- 适合模板文本、属性值、富文本、邮件源码、CMS 内容、爬虫结果和日志字段排查
- 支持把输出重新作为输入,检查是否出现重复编码、缺失实体或不可逆的上下文处理
- 所有转换都在当前浏览器标签页内完成,粘贴的内容不会上传
功能简介
一个本地 HTML 实体工作台,用来判断内容是否应该作为文本展示、是否已经被实体化,以及进入属性、邮件、CMS 或日志前还需要哪一层编码。
- 01
特殊字符编码
把尖括号、双引号、单引号和与号转换成对应实体,适合把代码样例、用户输入或普通文案放进 HTML 文本节点和属性值中展示。
- 02
Extensive HTML5 实体编码
使用 extensive HTML5 实体输出时,符号、标点、数学字符、货币符号和其他受支持字符可以表示为实体,适合旧系统、邮件源码或明确要求实体输出的场景。
- 03
实体解码
把命名实体、十进制数字实体和十六进制数字实体还原为可读文本,便于判断真实内容、重复编码层数和来源系统的输出规则。
- 04
模板输出检查
快速确认模板输出中的文本是未编码、编码一次,还是被重复编码,避免代码样例、用户文本和富文本摘要被错误解析或错误展示。
- 05
属性文本处理
处理 title、alt、aria-label 和 data 属性里的文本,重点关注引号、单引号、与号和尖括号,减少属性边界被打断的风险。
- 06
往返验证
把输出作为输入并切换模式,可以检查内容在编码和解码之间是否保持一致,也能快速发现重复实体化或误把 HTML 当文本的情况。
- 07
示例输入
内置 HTML 片段、属性文本和实体文本示例,方便先确认当前模式,再粘贴真实内容。
- 08
本地处理
转换、复制和往返检查都在浏览器内完成。模板草稿、邮件源码、内部日志和 CMS 内容不会离开本机。
如何使用
选择转换方向,粘贴输入,需要时选择编码模式,输出会实时更新。
- 01
在转换模式中选择编码或解码。
- 02
把文本、HTML 片段或实体字符串粘贴到输入区。
- 03
编码时,如果只需要处理 HTML 结构敏感字符,使用特殊字符模式;如果需要更广泛的实体输出,使用 extensive HTML5 实体模式。
- 04
检查输出区结果,并确认它将用于文本节点、属性值还是文档展示。
- 05
复制结果,或将输出作为输入并切换模式,验证是否能还原为原始文本。
功能说明
HTML 实体转换的关键不是多转几个字符,而是弄清内容将进入文本节点、属性值、邮件源码还是其他格式边界。
- 页面正文要展示代码样例、尖括号文本或用户输入时,使用编码的特殊字符模式。
- 处理属性值时,重点编码引号、单引号、与号和尖括号;如果属性本身是 URL,还要继续使用 URL 编码规则。
- 看到邮件源码、CMS 字段、爬虫结果或日志里有实体文本时,使用解码,先确认真实字符再做后续清洗。
- 面向旧系统、邮件源码或明确要求实体输出的场景,如果需要更广泛的命名实体或数字实体输出,可以使用 extensive HTML5 实体模式。
- 内容如果还要进入 JSON、JavaScript 字符串或 CSS,请在对应边界再使用对应编码方式,不要把 HTML 实体当成通用转义。
- 需要允许部分 HTML 标签时,请使用 HTML 净化器和允许列表。实体编码只改变字符表示,不负责筛选标签和属性。
适合哪些场景
HTML 实体经常出现在模板、富文本、邮件、爬虫结果、CMS 和日志排查中。这个工具适合处理小段文本的查看、转换和复制。
-
展示代码样例
把一段标签示例编码后放进文档正文,浏览器会把它显示为文本,而不是当成真实 HTML 解析。
-
处理属性值
给 title、alt、aria-label 或 data 属性准备文本时,先把引号和与号编码,减少破坏属性结构的风险。
-
排查模板输出
比较模板渲染前后的文本,判断内容是未编码、编码一次,还是被重复编码。
-
富文本内容检查
从编辑器、CMS 或数据库字段中取出实体文本,解码后查看用户真正输入了什么。
-
邮件源码阅读
邮件模板和 HTML 邮件源码常带有实体。解码后可以更快检查标题、按钮文案和法律声明。
-
爬虫和日志清理
把采集结果、错误日志或接口响应中的实体还原,便于人工阅读和后续清洗。
-
符号与旧系统链路处理
当特殊符号、标点、数学字符或旧系统输出要求需要实体形式表示时,可以使用 extensive HTML5 实体模式。
-
编码策略确认
在调整模板引擎、转义函数或 CMS 输出规则前,用小样本验证实体转换是否符合预期。
延伸阅读
如果实体化后的文本还要进入链接参数,请继续用 URL 编码解码 处理百分号编码。需要把图片以内联资源放进 HTML、CSS 或 Markdown 时,可以先用 图片转 Base64 生成 Data URL;如果处理的是普通文本、token 片段或配置值,再切换到 Base64 编码解码 做 Base64 往返校验。
使用建议
HTML 实体问题通常来自上下文混淆、重复编码、模板引擎自动转义和手动处理叠加。
- 先确认内容进入的是 HTML 文本节点、属性值,还是另一个格式。不同位置需要不同规则。
- 编码前先判断文本是否已经包含实体。已经实体化的内容再次编码后,常见结果是与号被重复转换。
- 用户可见文案通常只需要特殊字符转义。Extensive 实体输出更适合旧系统、邮件源码或明确要求实体输出的场景。
- 模板引擎通常自带转义机制。不要在同一段内容上同时手动编码和自动转义,除非你明确需要双层文本展示。
- 解码适合查看和排查,但不要把解码后的不可信 HTML 直接插入页面,也不要把它交给不受控的 HTML 渲染接口。
- 需要允许一部分标签时,应使用成熟的 HTML sanitizer,并明确允许哪些标签、属性和协议。
- 内容如果还要进入 URL、JSON、JavaScript 或 CSS,请在对应边界再使用对应编码方式。
- 上线前用小样本做一次编码和解码往返,确认特殊符号、多语言字符和 Emoji 没有被误删或重复实体化。
边界与注意事项
HTML 实体转换只解决字符表示问题,不等同于完整的内容安全策略。
- HTML 实体编码不是加密,也不是权限控制。任何人都可以解码。
- HTML 实体编码不是完整的 XSS 防护。真实页面仍需要上下文转义、HTML 净化、CSP 和安全的渲染策略。
- 这个工具按实体库的 HTML5 实体规则解码。未知实体通常会保持原样,而不是报错。
- 特殊字符模式主要处理 HTML 结构敏感字符,不会尝试改写普通文本、Emoji 或大多数符号。
- Extensive HTML5 实体模式可能让输出变长,因为更多受支持字符会表示为命名实体或数字实体。
- 不要把解码后的不可信 HTML 直接作为页面内容插入,尤其不要使用不受控的 HTML 注入接口。
- 几十 MB 的输入会让文本框和剪贴板明显变慢,这种规模更适合脚本或流式处理。
常见问题
这里整理了实体编码范围、重复编码、安全边界、属性文本和本地处理相关问题。
HTML 编码和 HTML 转义是一回事吗?
日常语境中常常混用。这里的编码指把会影响 HTML 解析的字符转换成实体,例如尖括号、引号和与号。实际工程中仍要按文本节点、属性值、脚本和样式等上下文分别处理。
为什么与号需要先编码?
与号是实体的起始字符。如果不处理它,文本里的实体样式内容可能会被浏览器继续解析,或者在二次处理时产生歧义。
为什么会看到与号被重复转换?
这通常表示内容被编码了两次。第一次把与号变成实体,第二次又把这段文本中的与号再次编码。可以解码一次检查原始内容。
特殊字符模式和 extensive 模式有什么区别?
特殊字符模式主要处理尖括号、引号、单引号和与号等容易影响 HTML 解析的字符。Extensive 模式会对更多受支持的符号和字符使用更广泛的 HTML5 实体输出。
解码会执行 HTML 或脚本吗?
不会。工具只把实体转换成文本字符,不会把结果插入页面执行。你仍然不应该把解码后的不可信 HTML 直接渲染到业务页面。
这个工具能防止 XSS 吗?
不能单独承担这个责任。实体编码是上下文转义的一部分,但 XSS 防护还需要安全模板、净化器、CSP、可信输入边界和正确的渲染方式。
属性值里应该编码哪些字符?
至少应处理引号、单引号、与号和尖括号。具体规则还取决于属性如何包裹、是否进入 URL 属性,以及模板引擎是否已经转义。
我的内容会上传到服务器吗?
不会。编码、解码、复制和将输出作为输入都在当前浏览器标签页内完成。输入不会发送到服务器。
更多相关工具
可以继续处理相邻任务:把实体文本放进 URL 参数,把图片转成 Data URL,或检查普通文本的 Base64 往返。