HTML 实体编码与解码
用命名、十进制或十六进制实体为 HTML 转义文本,或把 & 和 é 等实体转回字符。
代码示例
可直接复制到你自己的项目中。每个示例只使用该语言的标准库,因此无需安装任何东西。
const text = '<p class="x">Tom & Jerry</p>'
const entities = { '&': '&', '<': '<', '>': '>', '"': '"', "'": ''' }
console.log(text.replace(/[&<>"']/g, (char) => entities[char]))功能
为 HTML 转义文本,并把 HTML 实体转回字符。实体用名称(é)、十进制数字(é)或十六进制数字(é)来书写字符。
使用方法
- 输入或粘贴文本,或拖入文本文件。
- 选择编码或解码。编码时,选择只转义 HTML 视为标记的字符,还是同时转义所有非 ASCII 字符,以及写成名称、十进制还是十六进制数字。
- 复制或下载结果。
示例
转义标记:
<p class="x">Tom & Jerry</p> 变成 <p class="x">Tom & Jerry</p>。转义所有非 ASCII 字符后,café © € 变成 café © €。
须知
- HTML 文本和属性中始终需要转义的字符是
&、<、>、"和'。 - 撇号写成
',因为 HTML 4 没有它的名称。解码也能读取'。 - 没有名称的字符,如表情符号,写成数字,每个字符一个数字。
- 名称表涵盖 HTML 4.01 的 252 个实体。表外的名称在解码时保持原样。
什么是 HTML 实体?
实体是在 HTML 中不直接输入字符就能写出它的方式:名称如 é,或数字如 é(十进制)、é(十六进制)。因为 HTML 会把它们当作标记,所以文本和属性中必须转义五个字符:& < > 和两种引号。
常见问题
我必须转义哪些字符?
在文本中转义 & 和 <,在属性值内转义包围该值的引号。到处转义 > 和两种引号是无害的,也是安全的默认做法,“仅标记”就是这样做的。像这样转义用户输入是防御注入标记的第一道防线。
为什么撇号变成 ' 而不是名称?
HTML 4 没有撇号的命名实体。' 存在于 XML 和 HTML5,但旧软件不认识,所以数字是安全的选择。解码两者都接受。
这个工具会把我的文本发送到别处吗?
不会。一切都在你的浏览器中进行。你输入的内容不会发送到我们的服务器。