HTML 实体编码

在下方粘贴HTML或文本并点击编码将特殊字符转义为HTML实体。所有处理均在浏览器中本地完成。

已复制!

什么是HTML实体编码?

HTML实体编码将特殊字符转换为其HTML实体等价形式,以防止它们被解释为HTML标记。例如:

  • <&lt;
  • >&gt;
  • &&amp;
  • "&quot;
  • '&#39;

这可以防止XSS攻击并确保文本在HTML文档中正确显示。

真正要紧的是范围设置。只编码会破坏 HTML 的字符,正文仍然好读,凡是还要有人再编辑的内容都该这么选。把 ASCII 以上的字符全部编码,产出能扛过卡在单字节字符集上的流程,代价是文件大很多。当标题莫名其妙显得不对时,值得跑一遍不可见字符选项:随复制粘贴混进来的不换行空格或零宽连接符,会变成你终于看得见的具名引用。

标记老是跟你作对?

被转义的实体、坏掉的编码,以及在 CMS 里是一个样、在页面上又是另一个样的内容,通常说明流程中有一环在靠猜。我们做前端,也做它背后的发布链路,让访客看到的就是你写下的。

聊聊你的网站

常见问题

什么是 HTML 实体?
它是一种书写字符的方式,好让浏览器把它当文本读,而不是当标记读。&amp; 代表与号,&lt; 代表小于号,正是它挡住了一个乱入的尖括号被当成标签的开头。
到底哪些字符必须编码?
在普通正文里,严格说来只有与号和小于号是必需的,大于号是约定俗成。在属性里还要加上收尾的那个引号。其余都是可选的,所以这里的默认设置正好只编码这一组,其余保持可读。
用具名引用还是数字引用?
具名的更好读,编辑文件的人一眼就认得。数字的对所有字符都管用,包括大量根本没有名字的字符,也从不依赖解析器认不认识某个名字。规范和大多数机器生成的输出里,你看到的是十六进制那种写法。
为什么要把 ASCII 以上的全部编码?
因为链条里有一环别的都靠不住:一份老导出、一个邮件模板、一个声明这种字符集却发那种字符集的系统。编码 ASCII 以上的字符能让文件扛过去,代价是体积,而对还要有人再编辑的内容来说这是错的选择。
不可见字符选项能找出什么?
不换行空格、零宽连接符、软连字符,以及其他随复制粘贴混进来、然后毫无缘由地把版式弄乱的字符。打开它,这些会显示成看得见的引用,通常这是找到那个惹事字符最快的办法。