HTML 实体

把 <、>、& 和引号编成 HTML 实体,或把实体还原成字符。

让文字能放进 HTML

一段文字里如果有 < 或 &,直接放进 HTML,浏览器会把它当成标记。编码把这些字符变成实体,解码把实体还原成字符。这和 JSON 转义 不是一回事,也不是去掉标签。它只改写字符。

怎么用

  1. 粘贴原文或实体字符串。
  2. 选编码或解码。编码一定会转义 &、<、> 和两种引号。
  3. 「非 ASCII 字符也编码」打开时,中文和带重音的字母会变成 &#xHHHH;。页面本身是 UTF-8、只需要转义标记字符时,把它关掉。
  4. 解码接受 &#20013; 这种十进制、&#x4E2D; 这种十六进制,以及一小份命名实体:amp、lt、gt、quot、apos、nbsp、copy、reg、trade、mdash、ndash、hellip、laquo、raquo、bull、middot、euro、pound、yen、cent、sect、para、deg、plusmn、times、divide、micro。不在这份名单里的名字会原样留下。

不要指望它做别的事

编码不会套标签,也不会加文档类型。已经是实体的 & 再编一次会变成 &amp;。解码一次只剥一层。HTML5 里很多名字不在上面的名单中,会保持原样。不是合法码位的数字实体也保持原文,方便你看见写错的地方。

什么时候用

  • 把用户输入放进 HTML,避免它变成标签。
  • 读一份把中文存成数字实体的旧页面或订阅源。
  • 在渲染之前看模板实际会显示什么。

常见问题

为什么 &euro; 还是文字?

如果当前是编码,& 本身被转义了,你看到的是实体的源码。改成解码,已知的名字才会变成字符。

我要全部 HTML5 名字。

这一页覆盖日常文字里常见的名字,再加上任意数字实体。不认识的名字会留着,避免把拼写错误悄悄丢掉。