You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用URLSearchParams Web API时如何避免双重编码?

解决URLSearchParams双重编码问题

你遇到的问题核心是重复编码:URLSearchParams的set方法本身会自动对参数值执行URL编码,而你额外调用了encodeURIComponent,相当于把已经编码过的内容再编码一次——空格先被encodeURIComponent转成%20,之后URLSearchParams又把%转成%25,最终就变成了%2520。

直接去掉手动的encodeURIComponent调用即可解决问题,修改后的代码如下:

const getUrlParams = (page, pagesize, search) => {
    const urlParams = new URLSearchParams({
        page,
        pagesize
    });
    if (search && search.length) {
        // 移除encodeURIComponent,直接传入原始搜索字符串
        urlParams.set('search', search);
    }
    return urlParams;
};

当你传入"name EQ test-1002.dev.net"时,生成的search参数会被正确编码为name%20EQ%20test-1002.dev.net,最终URL就是:
https://test.com/cards?page=1&pagesize=10&search=name%20EQ%20test-1002.dev.net

另外补充:后续如果需要获取解码后的参数值,直接用URLSearchParams的get方法即可,它会自动帮你完成解码操作,无需额外处理。

内容的提问来源于stack exchange,提问作者CoderPJ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 15:20:31