AIStacker
Web最佳实践指南5 分钟阅读

URL 编码详解:什么时候该做百分号编码

解释为什么 URL 需要编码、encodeURI 与 encodeURIComponent 的区别,以及如何避免双重编码。

本指南包含
3
本指南使用的工具
2
相关主题
5
指南概览

URL 编码的作用,是把不能安全直接放进 URL 的字符转换成 %XX 形式。对于 redirect、query string、API 参数拼接这类场景来说,理解编码边界比死记函数名更重要。

01

为什么 URL 需要编码

#

URL 只能安全包含有限的一组 ASCII 字符。空格、?# 以及中文、日文等非 ASCII 文本如果直接放进去,解析过程就可能被破坏。

百分号编码会把不安全的字节写成 %XX。例如空格会变成 %20,问号会变成 %3F,字符 会按 UTF-8 字节序列写成 %E6%97%A5

本节相关工具

02

encodeURI 和 encodeURIComponent 的区别

#

encodeURI 适合处理完整 URL,它会保留 /?& 等结构字符,只编码真正不安全的部分。因此当你已经拿到完整地址,只想让它合法时,应优先考虑 encodeURI。

encodeURIComponent 则适合处理 URL 的片段,例如单个 query parameter、redirect target 或某个参数值。把整条 URL 错误地交给它,往往就是后续双重编码问题的起点。

本节相关工具

03

如何识别并避免双重编码

#

双重编码就是把已经编码过的字符串再次编码,结果 %20 会变成 %2520,因为 % 又被转义成了 %25

最常见的错误,是对已经带有 % 的完整 URL 再调用 encodeURIComponent。更稳妥的做法是只编码参数值,不要反复处理整条 URL。

本节相关工具