URL 编解码

URL 编码与解码(百分号编码):区分 encodeURI 与 encodeURIComponent 两种粒度,中文、空格与保留字符一次转义到位。

常见使用场景

  • 拼接查询参数时转义中文与 &、=、# 等保留字符
  • 解码被双重编码的链接,还原原始地址
  • 排查参数串位、链接被截断的转义问题
  • 把路径里的中文目录名转成合法 URL

示例

参数值编码(encodeURIComponent)

你好 world&x=1
%E4%BD%A0%E5%A5%BD%20world%26x%3D1

整条地址编码(encodeURI)

https://example.com/路径?q=你好 a
https://example.com/%E8%B7%AF%E5%BE%84?q=%E4%BD%A0%E5%A5%BD%20a

关于「URL 编解码」

保留字符

? & = # / : 等字符在 URL 里有语法含义,出现在参数值里必须转义,否则会被解析成新的参数或路径。中文、空格等非 ASCII 字符也要先转成 UTF-8 字节再编码。

两个函数

encodeURI 保留 : / ? # & = 等结构字符,适合整条 URL;encodeURIComponent 把它们也转义,适合单个参数值。选错会导致链接被截断或参数串位。

空格与加号

URL 编码里空格是 %20;在 application/x-www-form-urlencoded 表单里空格常写成 +。解码时 + 是否还原成空格取决于上下文,跨系统传参优先用 %20。

常见问题

encodeURI 和 encodeURIComponent 有什么区别?

encodeURI 保留 : / ? # & = 等结构字符,适合处理整条 URL;encodeURIComponent 连这些一起转义,适合处理单个参数值。用错会导致链接被截断或参数串位。

空格应该编成 %20 还是 +?

URL 路径与查询里规范写法是 %20;application/x-www-form-urlencoded 表单编码里空格常写成 +,且 + 在解码时可能还原成空格也可能保留原样。跨系统传参优先用 %20。

什么是双重编码?

对已经编码过的字符串再编码一次,%E4 会变成 %25E4,页面就会显示 %E4%BD%A0 这样的乱码。多解码一次即可还原,本工具可反复执行解码来排查。

中文一定要编码吗?

现代浏览器会自动把地址栏里的中文转成 UTF-8 百分号编码,但服务端拼接、分享链接与 API 参数场景仍要显式编码,否则跨环境表现不一致。

相关工具

URL 编解码在线工具由百宝匣提供:URL 编码与解码(百分号编码)。所有计算都在浏览器本地完成,不上传数据、无需注册、免费使用。