问题描述,后台返回一个参数携带在url上面,发的时候是空格隔开的字符串,但是到了前端放到地址栏打开是一个+号。
类似于
ts
// 后台返回的url
https://xxx.com?aa=a bxxx
// 打开浏览器后地址栏显示的
https://xxx.com?aa=a+bxxx
问了一下AI说是空格在 URL 中是特殊字符,需要进行编码才能正确传递。
而这里出现问题的原因极大可能是因为后台使用了encodeURIComponent
函数对 URL 进行编码,导致空格被转换为 %20
。之后,浏览器在解析 URL 时,会将 %20 转换为 + 号
。
为了避免这个问题,
后台使用encodeURIComponent
编码
ts
const url = encodeURIComponent('xsas xxa') // 得到 'xsas%20xxa'
前端使用decodeURIComponent
解码
ts
// 'xsas%20xxa' 从浏览器地址栏的url中读取
const url = decodeURIComponent('xsas%20xxa') // 得到xsas xxa