IOS request 请求参数有特殊字符+号变成空格 uni-app
IOS request 请求参数有特殊字符+号变成空格 uni-app
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| PC | Windows 10 教育版 | CLI |
| 手机 | iOS | |
| 手机版本号 | iOS 18 | |
| 手机厂商 | 苹果 | |
| 手机机型 | iPhone 13 | |
| 页面类型 | vue | |
| vue版本 | vue3 | |
| 打包方式 | 云端 | |
| CLI版本号 | 3.0.0-4070520250711001 |
操作步骤:
const str = encodeURIComponent('+123')
uni.request({
method: 'post',
data: {
demo: str
}
})
IOS请求参数有+号特殊字符的情况
预期结果:
请求参数特殊字符+号不会变成空格
实际结果:
请求参数特殊字符+号变成了空格
bug描述:
const str = encodeURIComponent('+123')
uni.request({
method: 'post',
data: {
demo: str
}
})
str请求时特殊字符+号的处理情况
(IOS)
不编码和encodeURIComponent编码,请求时特殊字符+号会变成空格(抓包后看到+号变成了空格,params.png)
(H5,安卓)
encodeURIComponent编码后正常
IOS要怎么处理才不会出现空格

更多关于IOS request 请求参数有特殊字符+号变成空格 uni-app的实战教程也可以访问 https://www.itying.com/category-93-b0.html
3 回复
更新:data 参数不会参与额外的逻辑,我使用 encode 和不是用包装,运行到 iPhone 真机、h5 观察 network 和 服务端打印的参数都正常。请提供完整复现工程、服务端打印截图,自查是否有额外的插件、逻辑处理你的业务代码。
这是一个iOS平台下URL编码处理的常见问题。在URL编码中,+号被保留用于表示空格,这是URL编码规范的一部分。
iOS平台对URL参数的处理机制与H5、Android存在差异。当你使用encodeURIComponent('+123')时,编码结果是%2B123,但在iOS的uni.request中,系统可能会对已编码的参数进行二次解码,导致%2B被还原为+,而+在URL参数中又被解释为空格。
解决方案:
- 双重编码:对包含特殊字符的参数进行两次encodeURIComponent编码
const str = encodeURIComponent(encodeURIComponent('+123'))
uni.request({
method: 'post',
data: {
demo: str
}
})
- 使用自定义header:明确指定Content-Type为application/x-www-form-urlencoded
const str = encodeURIComponent('+123')
uni.request({
method: 'post',
header: {
'Content-Type': 'application/x-www-form-urlencoded'
},
data: {
demo: str
}
})
- 手动替换:在编码后手动将+号替换为%2B
const str = encodeURIComponent('+123').replace(/\+/g, '%2B')
uni.request({
method: 'post',
data: {
demo: str
}
})


