参数值
red & blue编码结果
red%20%26%20blue参数值使用 encodeURIComponent;编码整个 URL 会改变分隔符。
URL 编解码工具把文本转换成可以安全放进 URL 的形式,也能把百分号编码的字符串还原成可读文本。粘贴一段带中文、带 & 符号或带空格的查询串,立刻得到合法、可以直接复制使用的结果。搭建链接、调接口、拼跟踪 URL 的开发者都会用到它。
URL 设计之初只支持有限的 ASCII 字符集。超出这个范围的字符,以及 ?、&、=、# 这类有特殊含义的保留字符,都必须编码成百分号加十六进制字节值的形式。非 ASCII 文字要先转成 UTF-8 再编码:汉字”中”会变成 %E4%B8%AD,每个 UTF-8 字节对应一段 %XX。
这块最常踩的坑是二次编码——%20 再编一次就成了 %2520。通常是已经编码过的字符串又被过了一次编码器,比如经过重定向链路,或者模板引擎自动做了编码。另一个容易搞混的是加号:在查询字符串里它代表空格,在路径里它就是字面意义的加号。搞清楚自己在处理 URL 的哪一部分,就知道该用哪条规则。
URL 编码(百分号编码)将 URL 中不安全的 ASCII 字符替换为 % 后跟其十六进制值。例如空格变为 %20。
URL 里不允许出现空格,编码成 %20 才能保证 URL 合法有效。
encodeURI 会保留 ?、& 等 URL 结构字符;encodeURIComponent 连这些也编码,适合用来处理查询参数的值。
在查询字符串(表单编码)里 + 代表空格,但在 URL 路径里它就是字面意义的加号。