??前言: 近日奉呛,由于使用阿里云的OSS圖片存儲(chǔ)服務(wù)器,發(fā)現(xiàn)一個(gè)相對不一樣的問題夯尽。首先是我們將圖片存儲(chǔ)在阿里云服務(wù)器上,然后在獲取到OSS 圖片存儲(chǔ)路徑后拼接上x-oss-process=image/info匙握,以獲取圖片尺寸等相關(guān)信息馁痴。
??那么問題來 了,在使用NSURLSession請求拼接后的URl后肺孤,有部分圖片信息返回的數(shù)據(jù)格式無法使用NSJSONSerialization進(jìn)行解析罗晕,提示錯(cuò)誤為Unable to convert data to string around character 625,然后就是巴拉巴拉的找Google了半天赠堵,也沒有合適的解決辦法小渊。首先說一下疑問:1.我們將請求到的data轉(zhuǎn)成NSString后,放到j(luò)son格式校驗(yàn)工具顯示沒有問題茫叭,然后NSJSONSerialization一解析就崩潰
??然后我打印了一下data的length是大于0的酬屉,說明啥?有數(shù)據(jù)揍愁,但是解析不了呐萨,那么肯定是編碼格式問題了,由于本人對編碼格式不確定是哪種莽囤,就此耽擱了半天
??下午再次搜索后發(fā)現(xiàn)谬擦,我請求的這個(gè)阿里云服務(wù)器WebService返回的是GB2312編碼數(shù)據(jù)。IOS解析要轉(zhuǎn)換為UTF8編碼格式的數(shù)據(jù)朽缎!那么惨远,思路就來了谜悟,肯定是將GB2312格式的數(shù)據(jù)轉(zhuǎn)換為UTF8的!
上代碼:
NSStringEncoding encode =CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);
NSString *result = [[NSString alloc] initWithData:data encoding:encode];
NSdata *data = [result dataUsingEncoding:NSUTF8StringEncoding];
??那么北秽,接著就可以使用NSJSONSerialization解析數(shù)據(jù)了葡幸!問題是解決了,由此才生兩個(gè)疑問:
1.怎么確定返回的數(shù)據(jù)格式是什么編碼格式呢贺氓?有知道的蔚叨,求分享
2.編碼格式的區(qū)別是什么?與kCFStringEncodingGB_18030_2000相似的枚舉很多辙培,區(qū)別是什么缅叠?那么,我可以給你一點(diǎn)參考一下虏冻,學(xué)習(xí)一下GB2312 ,GBK ,GB18030等的區(qū)別,大學(xué)記得學(xué)過弹囚,但是都還給老師了厨相,就此溫習(xí)一下