HTML实体编码、URL编码、JavaScript转义,编码与解码一键完成。
关于转义与反转义
转义是把有特殊含义的字符换成安全的表示形式,避免它被程序或浏览器当作语法解析。最常见的三类是 HTML 实体(把尖括号换成 < 这类写法)、URL 编码(把空格换成 %20)和 JavaScript 转义(把换行换成 \n)。
调试时经常需要来回转换——比如从日志里复制出来的一串百分号编码,需要先解码才能看懂参数内容。
常见问题
什么时候必须做 HTML 转义?
只要把用户输入的内容输出到页面,就必须转义,否则会形成 XSS 漏洞。未转义时,用户输入里夹带的脚本标签会被浏览器直接执行。
URL 编码里的 %20 和加号有什么区别?
在查询字符串里两者都可以表示空格,但含义不同:%20 是标准编码,加号只在 application/x-www-form-urlencoded 场景下代表空格。出现在路径部分时,加号会被当作字面量。
为什么反转义两次才拿到原文?
说明数据被编码了两次。常见于参数在多个系统间层层传递的场景,需要逐层解码才能还原。