HTML 实体编码 / 解码
转义 HTML 文本,或将 & 类实体还原为字符
本地运行
loading…
关于此工具
把文本转义为可安全嵌入 HTML 的形式——& 变成 &amp;,< 变成 &lt;——或把满是实体的文本解码回可读字符,涵盖命名实体(&rarr;)、十进制(&#169;)和十六进制(&#xA9;)数字引用。
编码提供两个级别:仅转义会破坏 HTML 结构的五个关键字符(& < > " '),这对正确性来说已经足够;或转义所有非 ASCII 字符,在工具链某处会弄坏 UTF-8 时有用。「仅数字」模式跳过命名实体,以最大兼容严格的 XML 解析器——它们只保证五个预定义实体。
解码是日常用得更多的那一半:贴一段抓来的片段或满是 &#x27; 的 API 响应,得到干净文本。未知的实体名会原样通过,而不是被瞎猜。
常见问题
- HTML 里哪些字符必须转义?
- 文本内容中:& 和 <。属性值中:还要加上包住属性的引号字符(" 或 ')。转义 > 是惯例但并非严格必需。其它字符都可以在 UTF-8 文档中按字面出现。
- 实体编码能防 XSS 吗?
- 转义五个结构字符确实是 HTML 上下文输出编码的核心——但仅限 HTML 文本和属性上下文。URL、JavaScript 字符串和 CSS 需要各自的上下文编码;仅靠实体转义并不能让任意注入在那些地方变得安全。
- 该输出命名实体还是数字实体?
- 数字引用(&#xE9;)在所有 HTML 和 XML 解析器中都有效。命名实体更可读,但 XML 只预定义五个,所以 &eacute; 会弄坏严格的 XML/XHTML 管线。拿不准时,用数字。
- 为什么我的数据里出现 &amp;#39;(双重编码)?
- 两层各编码了一次:第一次编码的 & 又被第二轮转义了。在这里解码两次即可还原文本,然后找到并修复那个不该编码的层。