當使用系統自帶的NSJSONSerialization 將請求返回的data轉換為NSDictionary或NSArray 時有可能為null,這時可能是json中包含中文字符,我們可以改變編碼格式對獲取到的data數據先用CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000)編碼轉換為NSString,再轉成NSData ,最后再使用NSJSONSerialization解析,具體如下:
NSStringEncoding enc = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);
//
NSString *receiveStr = [[NSString alloc]initWithData:data encoding:enc];
//? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 字符串再生成NSData
NSData * data = [receiveStr dataUsingEncoding:NSUTF8StringEncoding];
//再解析
NSDictionary *jsonDict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:nil];