编码工具

URL 编码里空格为什么有时是 +,有时是 %20?

解释 URL 编码中 + 和 %20 的差别,以及 encodeURI、encodeURIComponent 的适用场景。

打开 URL 编码解码工具

+ 和 %20 出现的位置不同

%20 是 URL 百分号编码里的空格表示。+ 常见于 application/x-www-form-urlencoded 表单编码,尤其是查询参数或表单提交场景。

因此看到 + 不一定错,关键要看这段字符串来自哪里、由谁解码。接口联调时,前后端需要约定使用同一种编码和解码方式。

encodeURI 和 encodeURIComponent 怎么选

encodeURI 适合编码完整 URL,它会保留 : / ? & = # 等 URL 结构字符。encodeURIComponent 适合编码单个参数值,会把更多特殊字符转义掉。

如果你要把“搜索关键词、回调地址、中文标题”放到 query 参数里,通常应该使用 encodeURIComponent。

  • 完整链接整体编码:优先考虑 encodeURI。
  • 单个参数值编码:优先使用 encodeURIComponent。
  • 参数里包含 &、=、# 时必须谨慎,否则会被解析成 URL 结构。

中文参数的调试建议

中文在 URL 中通常会转成 UTF-8 百分号编码。复制接口地址时,如果经过 IM、文档系统或浏览器地址栏自动处理,可能出现重复编码。

排查时可以先解码一次看是否变成人类可读文本。如果解码后仍然是百分号串,说明可能被编码了两次。

常见问题

URL 编码可以重复解码吗?

不建议盲目重复解码。只有确认存在二次编码时才解码第二次,否则可能破坏原始内容。

为什么接口里的 + 变成了空格?

表单编码中 + 会被当成空格。如果原始内容需要保留 + 号,应编码为 %2B。

中文 URL 必须编码吗?

现代浏览器能显示中文 URL,但接口、日志和签名场景里建议统一编码,减少兼容问题。

🛠️ 更多实用工具: JSON格式化 YAML↔JSON XML↔JSON Base64编解码 URL编码 JWT解析 MD5/SHA加密 UUID生成 二维码生成 正则测试 文本Diff 时间戳转换 SQL格式化 Mock数据 图片压缩 图片Base64 颜色转换
📚 热门教程: JSON 格式化报错 时间戳秒/毫秒区别 Base64 中文乱码 URL 空格编码区别 图片压缩到 200KB 手机号邮箱正则 JWT 过期时间 MD5/SHA256 区别 全部教程