OpenReplay Logo
12k
12k

HTML 实体编码器/解码器

在线编码与解码 HTML 实体——具名、十进制或十六进制——在本地处理,所以你粘贴的任何内容都不会离开浏览器。

输出
范围
在本地处理

关于此工具

HTML 实体是用来表示那些原本会被解析为标记、或无法可靠输入的字符的转义序列——< 表示小于号,& 表示 & 符号,  表示不换行空格,以及像  (十进制)或  (十六进制)这样可表示任意 Unicode 码点的数字形式。编码会把原始字符转换为其实体;解码则把实体还原为字符。本工具支持以具名、十进制或十六进制形式编码,并能解码这三种形式,包括常见的具名集合以及表情符号等星际平面字符。

用它把用户生成的字符串、代码示例或引文安全地嵌入 HTML,而不破坏页面或制造 XSS 漏洞;修复从配置错误的模板中以 &amp;amp; 形式双重编码而来的文本;查看像 &#8212; 这样的数字引用并发现它是一个长破折号;或把带重音的字符和符号转换为纯 ASCII 实体,以适配较旧的电子邮件和订阅源管线。默认情况下,编码只转义 & < > " ',或在你开启完整范围时转义所有非 ASCII 字符。

编码 HTML 实体是为了安全显示,而非用于安全防护——应在不可信输入被渲染进 HTML 的那一刻对其进行实体编码,并依靠真正的清理器(sanitizer)和 Content Security Policy 来阻止 XSS。

常见问题

具名、十进制和十六进制 HTML 实体有什么区别?

它们是同一字符的三种记法。像 © 这样的具名实体便于人阅读,但只存在于固定的一组字符;十进制(&#169;)和十六进制(&#xA9;)数字引用适用于任意 Unicode 码点,所以任何字符都始终可以用数字表示。

哪些字符必须编码为 HTML 实体?

至少是对 HTML 解析器有意义的五个字符:&(&amp;)、<(&lt;)、>(&gt;)、"(&quot;)和 '(’)。首先编码 & 符号至关重要,否则已有的实体会被双重编码。其他字符是可选的,仅在需要纯 ASCII 传输时才用到。

为什么我的文本显示为 &amp; 而不是 &?

这是双重编码:& 符号被转义了两次,通常是因为已经编码过的 HTML 又被再次送入编码器。把文本解码一遍会把 &amp;amp; 还原为 &amp;,再解码一遍则得到字面的 &——本工具每次运行只解码一层,因此你可以逐步将其还原。