用NSURLConnection Post上传数据的"+"会变成空格

本文介绍了一种在POST操作中遇到的图片Base64编码问题及解决方案。当图片转换为Base64字符串并进行POST上传时,发现字符串中的某些特殊字符如“+”会变成空格,导致服务器端无法正确解析。通过使用UTF8编码处理这些特殊字符,成功解决了问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

     在一次项目中,要post图片到服务器上去,在之前要将图片转换成base64的格式。但是发现post上去的图片在服务器端总是不存在,经过与后台数据的对比发现image转成base64String里的“+”,post到服务器上都变成了空格。郁闷的很呀!开始没仔细去想,就直接叫后台将我post的string中的空格全部替换成“+”,这倒也算是解决了这个问题。但是总觉得这不是解决问题的最佳途径。后台经过查看一些资料,终于发现这个情况在post时,如果url中含有特殊字符(如“+=等”)就会出现的。但是在post之前对这些特殊符号做一次UTF8就可以了解决这个问题了。下面贴代码:
 NSString *baseStr = [imgData base64Encoding];
 NSString *baseString = (__bridge NSString *) CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, 
                                                       (CFStringRef)baseStr, 
                                                       NULL, 
                                               CFSTR(":/?#[]@!$&’()*+,;="), 
                                               kCFStringEncodingUTF8);
[urlRequest setHTTPBody:[baseString dataUsingEncoding:NSUTF8StringEncoding]];


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值