Skip to content

Latest commit

 

History

History
29 lines (20 loc) · 1.6 KB

HTML 的实体编码(HTML Entity Encode).md

File metadata and controls

29 lines (20 loc) · 1.6 KB

HTML 的实体编码(HTML Entity Encode)

HTML 实体编码是将特殊字符编码为一个符号,这样就可以在 HTML 中使用这些字符而不会影响文档的结构。

例如:

  • 不可分的空格 —  
  • <(小于符号) — &lt;
  • >(大于符号) — &gt;
  • &(与符号) — &amp;
  • "(双引号) — &quot;
  • '(单引号) — '&apos;
  • ©(版权符号)— &copy;

以上列出的一些实体比较容易记忆,但有一些不容易记住的你可以查看 WHATWG 提供的字符实体的官方列表或使用解码工具

HTML 实体是一段以连字符号(&)开头,以分号(;)结尾的字符串。用以显示不可见字符及保留字符(如 HTML 标签)

在前端,一般为了避免 XSS 攻击,会将 <> 编码为 &lt;&gt;,这些就是 HTML 实体编码。

在 HTML 转义时,仅仅只需要对六个字符进行编码:&<>"' 以及 `。我们可以使用 heDOMPurify 库进行编码及转义。

// 实体编码
he.encode('<img src=""></img>') // '&#x3C;img src=&#x22;&#x22;&#x3E;&#x3C;/img&#x3E;'

// 转义
he.escape('<img src=""></img>') // '&lt;img src=&quot;&quot;&gt;&lt;/img&gt;'