一次处理几类常见的字符转义,边输入边转,可勾选「自动判断方向」(看到 %XX、&、\uXXXX 就解码,否则编码):
| 模式 | 用途 |
|---|---|
| encodeURIComponent / 解码 | 编码放进 URL 的单个参数值,& = ? / 空格 中文 都会转成 %XX |
| encodeURI / 解码 | 编码整条 URL,保留 : / ? # [ ] @ 等结构字符 |
| 全字节 %XX 编码 | 连 - _ . ~ 也编码,用于要求最严格的场合 |
| HTML 转义 / 反转义 | < > & " ↔ < > & ",防 XSS、在网页里显示代码 |
| JS 字符串转义 | 文本 ↔ \uXXXX / \xXX,写进 JS/JSON 源码字符串 |
| escape() / unescape() | 旧版函数,产生 %uXXXX,只为兼容老脚本 |
| 列出码位 | 逐字符显示 U+XXXX |
全部在浏览器本地完成,内容不上传。
?q=值):encodeURIComponent。%u4F60%u597D 这种老编码:选 unescape()(或开自动判断)。Q:encodeURI 和 encodeURIComponent 有什么区别?
A:encodeURI 假设你给的是完整 URL,所以不编码 : / ? # & = 这些结构字符;encodeURIComponent 假设你给的是一个片段/值,几乎所有非字母数字都编码。放进 ?key= 后面的值用后者。
Q:解码报错"URI malformed"?
A:待解码的字符串里有落单的 %(后面不是两位十六进制),或转义序列被截断。检查是否复制完整。
Q:escape() 为什么不推荐?
A:它对非 ASCII 产生 %uXXXX,不是标准的百分号编码,很多语言/服务无法识别。除非要对接依赖它的老系统,一律用 encodeURIComponent。
Q:HTML 反转义安全吗?
A:这里只做文本层面的实体还原,不会执行脚本。但还原后的内容不要直接 innerHTML 插回页面,否则可能引入 XSS。
Q:数据会上传吗? A:不会,所有转换在浏览器本地完成。
相关:URL 解析 · Base64 · Unicode 编解码 · UTF-8 与十六进制 · 文本转 HTML。