功能简介
HTML 实体是代表某个字符的代码,比如 < 代表 <,é 代表 é。这个工具可以把文本转义成实体,让它能安全地显示在网页里;也可以把实体还原成普通文本,比如从 CMS 或邮件模板里复制出来的标记。
编码使用 HTML5 完整的 2000 多个命名实体,解码能识别命名实体、十进制(©)和十六进制(©)引用,结果和浏览器完全一致。
使用方法
- 把文本或 HTML 粘贴到「输入」框,或上传文件,也可以点「示例」。
- 选择「编码」或「解码」。
- 编码时选择编码范围:
- 仅 & < > ” ‘:把文本放进 HTML 或属性所需的最少转义。
- 再加非 ASCII,命名实体:把 é、©、— 等字符也转成命名实体,没有名称的字符用数字引用。
- 再加非 ASCII,数字实体:同上,但一律用数字形式(
é),也符合 XML。 - 所有有名称的字符:连
.、/这样的标点也会转义,适合会吞掉这些字符的系统。
- 复制或下载结果。点「作为输入」可以再解码一次,检查来回转换是否一致。
示例
<p>Café & "crème brûlée"</p>
只转义特殊字符后变成
<p>Café & "crème brûlée"</p>
加上非 ASCII 命名实体后变成
<p>Café & "crème brûlée"</p>
常见用途
在博客里展示代码片段而不被浏览器渲染;把用户输入的文本放进 HTML 邮件;修复 &amp; 这样被重复转义的文本(解码一次即可);或者让文件能被只接受 ASCII 的系统处理。
常见问题
› HTML 里哪些字符必须转义?
在正文里要转义 & 和 <;在属性值里还要转义包住属性值的那种引号。默认选项会转义 & < > " 和 ' 这五个字符,在任何位置都安全。
› 用命名实体还是数字实体?
现代浏览器都支持。é 这样的命名实体更好读;é 这样的数字实体在 XML 和只认识少数名称的老解析器里也能用。如果页面是 UTF-8 编码,通常根本不需要转义非 ASCII 字符。
› 解码能处理没有分号的实体吗?
能。解码遵循 HTML 规范,像 © 这样没有分号的旧写法会按浏览器的方式解码。&foo; 这种不存在的名称会原样保留。
› 转义就能防止 XSS 吗?
对放进 HTML 元素正文和带引号属性里的文本,转义是正确的防护手段。但它不能让不可信的输入在 script、style、事件处理属性或 URL 里变得安全,这些位置需要针对具体上下文的编码。