HTML 实体编解码
HTML 实体与字符互转,支持命名 / 十进制 / 十六进制。
什么是HTML 实体编解码?
HTML 实体是在 HTML 文档中表示特殊字符(如 < > & 引号)或某些不便直接输入字符的转义写法,分为命名实体(如 &)、十进制数字实体(如 &)和十六进制数字实体(如 &)三种形式。
为什么使用HTML 实体编解码?
在 HTML 中直接写 < 会被浏览器解析成标签起始符,必须转义成 < 才能正常显示为文本;富文本编辑器保存用户输入、模板引擎渲染动态内容、防止 XSS 注入时都需要对特殊字符做实体编码。 与 URL 编码的区别在于:HTML 实体只处理在 HTML 语法中有特殊含义的字符,URL 编码处理的是 URL 传输中的保留字符和非 ASCII 字符,两者应用场景不同,不能互相替代。
使用示例
编码含特殊字符的文本
输入 <div>你好&"世界"</div>,编码后得到 <div>你好&"世界"</div>,这样粘贴进 HTML 页面就不会被误解析成标签。
解码命名实体
输入 © 2024 & Co.,解码后得到 © 2024 & Co.,还原出原始可读文本。
十六进制与十进制形式对照
字符 & 可以写成命名实体 &,也可以写成十进制 & 或十六进制 &,三者在浏览器渲染结果上完全等价。
使用提示
浏览器本地转换,数据不上传;对任何要展示到页面上的用户输入内容,都应该做实体编码后再插入 DOM,避免被浏览器当作标签解析而引发显示异常或安全问题。
常见问题
「仅转特殊字符」和「转所有非ASCII」有什么区别?
「仅转特殊字符」只转义 & < > " ' 这几个 HTML 中有特殊含义的字符;「转所有非ASCII为&#十进制」在此基础上,还会把中文、emoji 等非 ASCII 字符转成 &#数字; 形式的数字实体,兼容性更好。
解码支持哪些实体格式?
支持命名实体(如 & ©)、十进制数字实体(如 &)和十六进制数字实体(如 &),解码借助浏览器原生解析,覆盖全部标准 HTML 实体。
数据会上传吗?
不会。编码解码全部在浏览器本地完成,不发起任何网络请求。
中文字符需要转义吗?
中文本身不属于 HTML 中有特殊语法含义的字符,正常情况下不需要转义,除非业务要求对所有非 ASCII 字符统一做数字实体编码。
为什么做实体编码可以防 XSS?
把用户输入中的 <script> 等标签字符转义成 <script> 后,浏览器会把它当作普通文本显示,而不会当作可执行的标签或脚本解析,从而避免恶意代码被执行。
和 URL 编码有什么区别?
HTML 实体解决的是字符在 HTML 标签语法中被误解析的问题,URL 编码解决的是字符在 URL 传输中不被支持或有歧义的问题,二者用途和编码规则完全不同。
命名实体和数字实体应该用哪种?
常见符号(& < > " 等)用命名实体可读性更好;不常见的符号建议使用数字实体,兼容性更有保障。
相关工具
相关教程
← 返回工具箱· 数据均在浏览器本地处理,不上传服务器。