1
Amy 原创整理|资料核验:2026-10-30
MDN说明,URLSearchParams从查询字符串构造时,会把加号“+”解释为空格。如果把原始值直接拼成字符串,数据中的加号可能被改变。
教学例子:new URLSearchParams('q=A+B').get('q')得到'A B'。若需要保留字面值'A+B',可先建立空的URLSearchParams,再执行append('q', 'A+B');序列化时加号会编码,取值时仍保留原来的加号。
另一个常见问题是提前对值做百分号编码后又交给append。该方法按未编码的原始字符处理,预先编码可能导致再次编码。
Amy建议:明确每一步接收的是原始值还是已经编码的查询字符串,别混用;用中文、空格、加号和百分号各做一个往返例子,比较取回的值是否与原值相同。本帖只讨论编码行为,不包含真实令牌或个人资料。
官方来源:
https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams