URL编码解码工具:中文URL转义在线转换(2026)
URL编码解码工具:中文和特殊字符的URL转义在线编码解码,讲清为什么URL里的中文会变成%百分号乱码及使用场景。
URL编码解码工具:中文和特殊字符的URL转义在线编码解码,讲清为什么URL里的中文会变成%百分号乱码及使用场景。
下面这个URL编码工具,纯浏览器本地运行,输入即出结果,不上传数据。往下有原理和使用说明。
All facts verified. Here is the knowledge HTML.
URL 编码就是把网址里有特殊含义或非 ASCII 的字符,替换成”%+两位十六进制”(空格变 %20,中文按 UTF-8 逐字节转),让浏览器和服务器不会把它们误当成语法分隔符。按 RFC 3986 的规定,只有字母、数字和 - _ . ~ 这几个”非保留字符”能原样出现,其余的 / ? # & = @ 要么保留作语法用途、要么必须转义。
为什么非编不可?一条 URL 里 ? 分隔路径与查询、& 分隔多个参数、= 分隔键与值。假如参数值本身带这些字符(比如搜索词就是 a&b),不编码就会被当成新参数,数据当场错乱。这也是本工具的核心用途:把一段文本安全地塞进 URL,或把别人给的 %E4%B8%AD 还原成可读文字。
JavaScript 里两个编码函数最容易混。差别就在它们对分隔符的态度:
| 对比项 | encodeURI | encodeURIComponent |
|---|---|---|
| 不编码的分隔符 | ; / ? : @ & = + $ , # 全保留 | 这些统统编码 |
| 适用场景 | 编整条拼好的网址 | 编单个参数值或路径片段 |
| 空格结果 | %20 | %20 |
| 典型翻车 | 值里含 &= 会拼错参数 | 基本安全,日常首选 |
结论很直接:编单个参数值或路径片段用 encodeURIComponent,编整条已经拼好的网址才用 encodeURI。九成场景选前者不会错。
1. 重复编码——对已经编过的串再编一次,% 会变成 %25,链接彻底失效。拿到手的字符串先确认它到底编过没有。
2. + 和 %20 混淆——表单提交(application/x-www-form-urlencoded)用 + 代表空格,而 encodeURIComponent 输出的是 %20;解码时 decodeURIComponent 不会把 + 还原成空格,得自己先把 + 替换掉。
3. 没完全遵守 RFC 3986——encodeURIComponent 不编码 ! ' ( ) * 这五个字符,但 RFC 3986 其实要求转义它们,个别严格的服务端会因此解析异常,必要时得手动补编。
—
参考来源(已联网核实,正文未编造任何数字):
– MDN `encodeURIComponent()` / `encodeURI()`:两函数不编码的字符集、`! ‘ ( ) *` 与 RFC 3986 的出入及官方 workaround — https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent
– RFC 3986(URI 通用语法):非保留字符 `A-Z a-z 0-9 – _ . ~`、保留字符集、百分号编码定义 — https://datatracker.ietf.org/doc/html/rfc3986
– Wikipedia「Percent-encoding」:`%20`=空格(十六进制 20 / 十进制 32),表单 `+` 空格 vs `%20` 的区别(PHP `urlencode` 用 `+`、`rawurlencode` 用 `%20`)— https://en.wikipedia.org/wiki/Percent-encoding
正文约 780 字,含 1 张对照表 + 1 个深色适配蓝框(thead `#0693e3` 白字、蓝框 `#f0f9ff`+`#0693e3`),无八股词,开头直答。结尾已留「相关阅读」占位。