根據(jù)服務(wù)器返回的 NSHTTPURLResponse 獲取數(shù)據(jù)編碼格式:
- (NSStringEncoding)stringEncodingWithResponse:(NSHTTPURLResponse *)response {
NSStringEncoding stringEncoding = NSUTF8StringEncoding;
if (response.textEncodingName) {
CFStringEncoding encoding = CFStringConvertIANACharSetNameToEncoding((CFStringRef)response.textEncodingName);
if (encoding != kCFStringEncodingInvalidId) {
stringEncoding = CFStringConvertEncodingToNSStringEncoding(encoding);
}
}
return stringEncoding;
}
獲取編碼格式之后,就可以正確的解析服務(wù)器返回的數(shù)據(jù)了。
// data 為服務(wù)器返回的數(shù)據(jù),stringEncoding 可以用上面的方法獲取
NSString *string = [[NSString alloc] initWithData:data encoding:stringEncoding];
在
AFNetworking (3.1.0)中有相關(guān)代碼。