2

我只是想知道是否有任何现有的类别或任何类型的函数会从 NSURLResponse 对象中返回我的 NSStringEncoding 常量。

我目前面临的问题是,当我将 Web 服务响应数据转换为 String 时,我已将编码硬编码为 NSUTF8StringEncoding 然后它实际上会导致问题,因为我的 Web 服务有时会返回以 UTF8 编码的响应,有时会以 ASCII 编码(虽然我不太确定所有的编码,但是是的,有时响应中有其他语言字符,如日语、中文等)

所以我的想法是在 NSURLResponse 上有一个类别来检测编码并返回例如。

 NSURLResponse * response = // NSURLResponse object ( web service response headers )
 NSData * responseData = // NSData object ( web service response data )
 NSStringEncoding encoding = [response stringEncodingUsed];
 NSString * responseText = [[NSString alloc]initWithData:responseData encoding:encoding];
4

1 回答 1

10

有个更好的方法。

您可以从 URLResponse 获取编码名称作为字符串,然后搜索相应的 NSStringEncoding。

NSString *encodingName = [aURLResponse textEncodingName];
NSStringEncoding encodingType = CFStringConvertEncodingToNSStringEncoding(CFStringConvertIANACharSetNameToEncoding((CFStringRef)encodingName));

encodingName可能为 nil,如果提供的结果没有适当的结果encodingName,则变量的结果值encodingType将无效。

于 2013-11-10T02:04:48.920 回答