使用x-oss-process=image/info出现错误提示Unable to convert data to string around character 625,

  前言: 近日,由于使用阿里云的OSS图片存储服务器,发现一个相对不一样的问题。首先是我们将图片存储在阿里云服务器上,然后在获取到OSS 图片存储路径后拼接上x-oss-process=image/info,以获取图片尺寸等相关信息。

  那么问题来 了,在使用NSURLSession请求拼接后的URl后,有部分图片信息返回的数据格式无法使用NSJSONSerialization进行解析,提示错误为Unable to convert data to string around character 625,然后就是巴拉巴拉的找Google了半天,也没有合适的解决办法。首先说一下疑问:1.我们将请求到的data转成NSString后,放到json格式校验工具显示没有问题,然后NSJSONSerialization一解析就崩溃

  然后我打印了一下data的length是大于0的,说明啥?有数据,但是解析不了,那么肯定是编码格式问题了,由于本人对编码格式不确定是哪种,就此耽搁了半天

  下午再次搜索后发现,我请求的这个阿里云服务器WebService返回的是GB2312编码数据。IOS解析要转换为UTF8编码格式的数据!那么,思路就来了,肯定是将GB2312格式的数据转换为UTF8的!
上代码:

NSStringEncoding  encode =CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000); 
NSString *result = [[NSString alloc] initWithData:data encoding:encode];
NSdata *data = [result   dataUsingEncoding:NSUTF8StringEncoding];

  那么,接着就可以使用NSJSONSerialization解析数据了!问题是解决了,由此才生两个疑问:
1.怎么确定返回的数据格式是什么编码格式呢?有知道的,求分享
2.编码格式的区别是什么?与kCFStringEncodingGB_18030_2000相似的枚举很多,区别是什么?那么,我可以给你一点参考一下,学习一下GB2312 ,GBK ,GB18030等的区别,大学记得学过,但是都还给老师了,就此温习一下

你可能感兴趣的:(使用x-oss-process=image/info出现错误提示Unable to convert data to string around character 625,)