0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
配置
编码和解码 HTML 实体。基本 仅编码 5 个破坏 HTML 的字符:
& < > " '。扩展 还会编码所有非 ASCII 字符。您可以选择使用带名称的实体 (&), 十进制 (&) 或 十六进制 (&)。工作原理
HTML 实体表示在标记中具有特殊含义的字符(< > & " ')或非 ASCII 字符,使用诸如 <、& 或 © 之类的序列。这样浏览器就会将它们显示为文本,而不是当作代码解释。
有三种等价格式:命名(©)、十进制(©)和十六进制(©)。三者产生相同的字符;命名格式更易读,但只对已知的字符集存在。
“基本”范围只转义会破坏 HTML 的字符(& < > " ');“全部”范围还会转义任何非 ASCII 字符。
示例
<a href="#"><a href="#">转义可防止浏览器解释这些标签,并将其显示为文本。5 < 10 & 3 > 15 < 10 & 3 > 1© 2024 · €© 2024 · €使用“全部”范围和命名格式。十进制为 © 和 €;十六进制为 © 和 €。使用场景
- 在页面上将 HTML 代码显示为文本(示例、文档),而不被渲染。
- 在将用户输入插入 HTML 之前对其转义以防止 XSS。
- 以在各种编码间可移植的方式插入特殊符号(©、€、→、½)。
- 解码从页面源代码复制的、包含实体的文本。
常见问题
哪种格式最好:命名、十进制还是十六进制?
命名格式(©)最易读,但只涵盖有定义名称的字符。十进制(©)和十六进制(©)适用于任何 Unicode 字符,因此对于不常见的符号是安全选择。
编码实体能防止 XSS 攻击吗?
这是重要的一环,但转义必须根据上下文(HTML 内容、属性、JavaScript 或 URL)进行。不要只依赖单一层:也要使用框架的防护。
哪些字符必须始终转义?
内容中的 & < >,以及属性值内的 " 和 '。“基本”范围恰好涵盖这一组。
我的文本会发送到服务器吗?
不会。编码和解码完全在你的浏览器中进行。