为什么URLSearchParams.set将空格编码为“ +”而不是像编码URIComponent那样将“%20”编码为空格?

问题描述

您是否会知道原因:

return OkHttpClient.Builder()
        .callTimeout(60,TimeUnit.SECONDS)
        .readTimeout(60,TimeUnit.SECONDS)
        .writeTimeout(60,TimeUnit.SECONDS)
        .connectTimeout(60,TimeUnit.SECONDS)
        .addInterceptor {
            val builder : Request.Builder = it.request().newBuilder()
            builder.addHeader(AUTHORIZATION_HEADER,"jwt-token")
            return@addNetworkInterceptor it.proceed(builder.build())
        }
        .build() 

导致:

“ xxx =&test =一+二+三”(空格编码为“ +”号)

相反:

var urlParams = new URLSearchParams("xxx");
urlParams.set("test","one two three");
console.log(urlParams.toString());

导致:

“ one%20two%20three”(编码为“%20”序列的空格)。

[在Firefox 78.0.2上测试]

encodeURIComponent("one two three"); 呼叫URLSearchParams.set()有意义吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)