HarmonyOS 鸿蒙Next url.URLParams 会将空格编码为+号

发布于 1周前 作者 ionicwang 来自 鸿蒙OS

HarmonyOS 鸿蒙Next url.URLParams 会将空格编码为+号
``` 空格目前有两种不同的编码方式,一种是在HTML4中定义的(编码成+),而另一种是在RFC-3986中定义的,编码成(%20)

我期望的是编码成%20,和encodeURIComponent行为保持一致, 而不是+,有什么设置办法不

let param = new url.URLParams();
param.set("timestamp", "2024-12-13 12:33:44")
console.log(param.toString())
console.log(`timestamp=${encodeURIComponent("2024-12-13 12:33:44")}`)

timestamp=2024-12-13+12%3A33%3A44

timestamp=2024-12-13%2012%3A33%3A44


更多关于HarmonyOS 鸿蒙Next url.URLParams 会将空格编码为+号的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复
这块是对标js,URLParams 对象在处理带有空格的 URL 参数时,会将空格编码为 +,符合 URL 编码规范,所以没有办法配置 想用解析成%20的话就只能是改用encodeURIComponent这样

更多关于HarmonyOS 鸿蒙Next url.URLParams 会将空格编码为+号的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS(鸿蒙)系统中,当你使用url.URLParams进行URL参数编码时,空格通常会被编码为+号。这是URL编码的一种标准方式,符合RFC 1738和RFC 3986等规范,其中空格字符可以被表示为+或者%20

在大多数Web服务器和客户端处理URL时,+%20都被视为等价的空格表示。然而,如果你的应用场景需要空格被严格编码为%20而不是+,你可能需要在将数据传递给url.URLParams之前手动进行替换。

例如,你可以使用字符串的替换函数来将空格替换为%20

let params = { key: "value with spaces" };
let urlEncodedParams = new URLSearchParams();
for (let [key, value] of Object.entries(params)) {
    urlEncodedParams.append(key, value.replace(/ /g, '%20')); // 替换空格为%20
}
let encodedString = urlEncodedParams.toString();

这段代码会遍历一个对象,将其键值对添加到URLSearchParams中,并在添加之前将值中的空格替换为%20

如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html

回到顶部