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。
本节相关工具
本指南使用的工具