iOS无法解析服务端给的base64数据,服务端解不了iOS给的
2021-09-30 本文已影响0人
香烟不灭
1.我们有个需求,h5通过weex插件传给客户端PDF的base64数据,客户端收后要去加载PDF。
安卓收到的可以加载,iOS这边一直加载不出来。最后发现h5给过来的base64 经过编码后 + = 会变成%2C %3D 这样的字符。所以应该是做了url编码(URL编码把保留字符表示为%开头的特殊字符序列,所以又叫做百分号编码)。我用了一个笨办法,就是直接替换过来,然后就可以了。
后来我百度了一下 用下面的方法就可以恢复成正常的字符
NSString *pdfStr = [inputText stringByRemovingPercentEncoding];
然后就解决了。
当然这个方法也可以解决中文乱码的问题。
2.传给服务端的aes加密数据 经过base64编码 传给服务端,结果 服务端先经过url解码后 才base64解码 然后解不出来了。最后发现 因为我们传给他们的base64里有+ 号,服务端 在url解码的时候 把+变成了 空格了,然后就解不出来了。
解决办法:我在base64编码后 又给处理了一下 方法如下:
+ (NSString *)URLEncodedString:(NSString *)orString
{
NSString *unencodedString = orString;
NSString *encodedString = (NSString *)
CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,
(CFStringRef)unencodedString,
NULL,
(CFStringRef)@"!*'();:@&=+$,/?%#[]",
kCFStringEncodingUTF8));
return encodedString;
}
反正base64 这个数据出问题就是因为 有没做url编码,有做的话两边都要相应的解码,才不会出问题。
最后帮到了你,动动金手指,点个赞再走呗。
23781632970084_.pic.jpg