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



我一直在使用URLSearchParams来简化与我的url相关的url参数。我已经编写了一个助手函数,它将返回params:-

const getUrlParams = (page, pagesize, search) => {
const urlParams = new URLSearchParams({
page,
pagesize
});
if (search && search.length) {
urlParams.set('search', encodeURIComponent(search));
}
return urlParams;
};

我的输入搜索字符串是这样的:;名称EQ test-1002.dev.net";

但是,返回的结果是这样的:-https://test.com/cards?page=1&页面大小=10&search=名称%2520EQ%2520test-1002.dev.net

看起来URLSearchParams正在用%2520而不是%20对搜索进行双重编码。

我怎么能添加这个,但仍然编码它%20?有人能帮我一下吗?

谢谢,Ashik

没有本机解决方案可用于此afaik,您可以尝试在再次编码字符串之前对其进行解码。这将确保在假设传递了一个未编码的字符串时对该字符串进行编码。

const getUrlParams = (page, pagesize, search) => {
const urlParams = new URLSearchParams({
page,
pagesize
});
if (search && search.length) {
urlParams.set('search', encodeURIComponent(decodeURIComponent(search)));
}
return urlParams;
};

最新更新