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