常见问题
为什么要把尖括号转义?
不转义浏览器会把它们当标签解析。把用户输入直接拼进页面就是典型的 XSS 漏洞来源。
& 和 < 分别代表什么?
& 是 &,< 是 <,> 是 >。实体以 & 开头、以分号结尾。
转义后页面显示会变吗?
不会。浏览器会把实体渲染回原字符,用户看到的仍是尖括号,只有源码里是转义形式。
关于这个工具
编码只处理四个字符:&、<、>、"。这四个是把文本放进 HTML 时唯一必须转的 —— 不转的话浏览器会把 < 当成标签开始,把 & 当成实体开头。顺序也是固定的:先转 &,否则后面转出来的实体会被自己再转一遍。
解码是单次扫描的:&lt; 只解一层,得到 < 而不是 <。这一点很关键 —— 分成几步依次替换的写法会把 &lt; 二次解码成尖括号,等于凭空篡改了内容。同时支持十进制与十六进制数字实体('、')和 '。
两个边界要知道:单引号在编码时不转(有些场合需要,比如属性用单引号包裹、或 JSON 串嵌在 onclick 里),需要时手工补 ';命名实体远不止这几个, 、©、— 之类解码时会原样留着,本工具不查实体表。
要提醒的是:转义能防的是「文本被当成标记解析」,不等于完整的 XSS 防护。把用户输入拼进属性值、内联脚本或 javascript: 链接时,各自还有各自的规则;真正安全的做法是交给 DOM API(textContent)或模板引擎自动转义,而不是手工拼字符串。