关于此工具
HTML 实体是用来表示那些原本会被解析为标记、或无法可靠输入的字符的转义序列——< 表示小于号,& 表示 & 符号, 表示不换行空格,以及像  (十进制)或  (十六进制)这样可表示任意 Unicode 码点的数字形式。编码会把原始字符转换为其实体;解码则把实体还原为字符。本工具支持以具名、十进制或十六进制形式编码,并能解码这三种形式,包括常见的具名集合以及表情符号等星际平面字符。
用它把用户生成的字符串、代码示例或引文安全地嵌入 HTML,而不破坏页面或制造 XSS 漏洞;修复从配置错误的模板中以 &amp; 形式双重编码而来的文本;查看像 — 这样的数字引用并发现它是一个长破折号;或把带重音的字符和符号转换为纯 ASCII 实体,以适配较旧的电子邮件和订阅源管线。默认情况下,编码只转义 & < > " ',或在你开启完整范围时转义所有非 ASCII 字符。
编码 HTML 实体是为了安全显示,而非用于安全防护——应在不可信输入被渲染进 HTML 的那一刻对其进行实体编码,并依靠真正的清理器(sanitizer)和 Content Security Policy 来阻止 XSS。
常见问题
具名、十进制和十六进制 HTML 实体有什么区别?
它们是同一字符的三种记法。像 © 这样的具名实体便于人阅读,但只存在于固定的一组字符;十进制(©)和十六进制(©)数字引用适用于任意 Unicode 码点,所以任何字符都始终可以用数字表示。
哪些字符必须编码为 HTML 实体?
至少是对 HTML 解析器有意义的五个字符:&(&)、<(<)、>(>)、"(")和 '(’)。首先编码 & 符号至关重要,否则已有的实体会被双重编码。其他字符是可选的,仅在需要纯 ASCII 传输时才用到。
为什么我的文本显示为 & 而不是 &?
这是双重编码:& 符号被转义了两次,通常是因为已经编码过的 HTML 又被再次送入编码器。把文本解码一遍会把 &amp; 还原为 &,再解码一遍则得到字面的 &——本工具每次运行只解码一层,因此你可以逐步将其还原。