HarmonyOS鸿蒙Next中Url.URL.parseURL方法在解析参数时,若含+号(如base64编码),会把+号去掉
HarmonyOS鸿蒙Next中Url.URL.parseURL方法在解析参数时,若含+号(如base64编码),会把+号去掉 Url.URL.parseURL方法,在解析参数时,若含+号(如base64编码),会把+号去掉
并不是提及的调用 url.URL.parseURL 方法后,+号被去掉了,而是在 url.params.forEach 方法遍历得到的参数值的时候,将 +号替换成空格了。实现标准就是这样,+会被替换为空格。
可以通过替换空格的方式来处理:
let urlString = 'sbuxcn://invoice-detail?invoice_apply_no=n4VjjJEJ0Q3U55M2rTnNELY9lQ+Pt/0cq817RvfE31lHrJrtm8I7px0K0YxhuA=='
const url2 = url.URL.parseURL(urlString)
console.log('url2 = ', url2.toString()) // url2 = sbuxcn://invoice-detail?invoice_apply_no=n4VjjJEJ0Q3U55M2rTnNELY9lQ+Pt/0cq817RvfE31lHrJrtm8I7px0K0YxhuA==
const path = url2.hostname + url2.pathname
let params: Record<string, string> = {}
if (path) {
url2.params.forEach((value, key) => {
console.log('value = ', value) // value = n4VjjJEJ0Q3U55M2rTnNELY9lQ Pt/0cq817RvfE31lHrJrtm8I7px0K0YxhuA==
const newValue = value.replace(/\s+/g, "" + "")
console.log('newValue = ', newValue) // newValue = n4VjjJEJ0Q3U55M2rTnNELY9lQ+Pt/0cq817RvfE31lHrJrtm8I7px0K0YxhuA==
params[key] = newValue
})
}
更多关于HarmonyOS鸿蒙Next中Url.URL.parseURL方法在解析参数时,若含+号(如base64编码),会把+号去掉的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next中,Url.URL.parseURL方法在解析URL参数时,若参数中包含+号(例如base64编码),会将其解析为空格。这是因为+号在URL编码中通常表示空格字符。这种行为符合URL编码规范(RFC 3986),即+号在查询字符串中被解释为空格。如果需要保留+号,可以在传递参数前对其进行URL编码,将+号替换为%2B,以确保在解析时不会被去掉。
在HarmonyOS鸿蒙Next中,Url.URL.parseURL方法在解析URL参数时,如果参数中包含+号(如base64编码),确实会将+号替换为空格。这是因为URL编码规范中,+号在查询字符串中通常表示空格。为了避免这个问题,可以在传入URL之前对参数进行URL编码,确保+号被编码为%2B,从而保留原始值。例如,使用encodeURIComponent对参数进行编码,确保+号不被错误解析。

