HTML实体编解码
HTML实体与字符双向转换,可选最小转义、命名实体或全部非ASCII,支持十进制与十六进制
写入 HTML 时最少需要转义 & < >,属性值内还需转义引号
数字实体兼容性最好,命名实体可读性更好
- 在 HTML 文本节点中,只有 & 和 < 是必须转义的;但把 > 一并转义可以避免误闭合标签。
- 属性值用双引号包裹时必须转义 ",用单引号包裹时必须转义 ',否则会提前结束属性。
- 转义不能替代输出位置的正确处理:写入 <script> 内、事件属性内或 URL 中需要各自对应的编码方式。
功能介绍
HTML实体编解码用于处理模板输出、富文本存储与邮件内容中的转义问题。编码提供三档范围:最小转义只处理与号、小于号、大于号、双引号、单引号五个字符(防XSS所需的最小集合,也是输出到HTML时最推荐的做法);命名实体额外转换版权号、箭头、希腊字母等有标准名称的字符;全部非ASCII把所有非ASCII字符转为实体,用于只能传输ASCII的老系统与邮件网关。实体形式可选命名、十进制或十六进制三种写法。解码器自行实现,内置八十余条命名实体表,同时支持十进制与十六进制数字实体,并会把无法识别的实体单独列出而不是静默丢弃,便于发现拼写错误或缺少分号的实体。转换在本地完成,内容不会上传。
使用说明
1. 切换"编码"或"解码"方向;2. 编码时先选择范围:输出到HTML页面用最小转义即可,需要兼容纯ASCII环境再选全部非ASCII;3. 选择实体形式,命名实体可读性好,数字实体兼容性最好;4. 解码时粘贴含实体的文本,无法识别的实体会在下方单独列出;5. 点击"复制"取得结果;6. 实体编码不是安全方案的全部:在HTML属性、JavaScript、URL、CSS四种上下文里需要不同的转义方式,服务端渲染请使用框架自带的转义机制而不是手工替换;7. 缺少结尾分号的实体在部分浏览器仍会被解析,编写过滤器时不要假设必须有分号。