URL 中文参数怎么编码?
讲解中文搜索词、回调地址、带特殊字符参数在 URL 中如何正确编码。
打开 URL 编码解码工具中文参数建议按 UTF-8 百分号编码
浏览器地址栏能直接显示中文,但接口、日志、签名和跳转链接里,中文参数最好转换成百分号编码,减少传输过程中的歧义。
例如搜索词、文章标题、城市名、回调地址等内容放进 query 参数时,建议使用 encodeURIComponent 处理。
- 单个参数值:使用 encodeURIComponent。
- 完整 URL:谨慎使用 encodeURI,避免把参数分隔符编码错。
- 参数里包含 &、=、# 时必须编码。
回调地址要特别小心二次编码
OAuth 登录、支付回调、短信跳转常会把一个 URL 作为另一个 URL 的参数。这时内部 URL 必须整体编码,否则里面的 & 和 ? 会破坏外层参数结构。
如果服务端拿到的 redirect_uri 不完整,通常就是没有正确编码或被重复解码。
如何判断是否被重复编码
如果解码一次后仍然看到大量 %E4、%B8 这样的片段,可能存在二次编码。排查时不要盲目多次解码,先确认上游到底编码了几次。
常见问题
中文 URL 不编码可以访问吗?
很多浏览器可以访问,但接口和签名场景建议编码,稳定性更好。
空格应该编码成什么?
URL 百分号编码中通常是 %20,表单编码中也可能看到 +。
为什么 + 号传到后端变成空格?
表单编码会把 + 当作空格。如果要保留加号,应编码成 %2B。