我只是想知道是否有任何现有的类别或任何类型的函数,将返回NStrug编码常数从NSURLRebug对象。
我现在面临的问题是,当我将web服务响应数据转换为字符串时,我已经将编码硬编码为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];

最佳答案

有更好的办法。
您可以从urlresponse获取编码名称作为字符串,然后搜索适当的nsstringencoding。

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

此外,encodingName可能为零,如果提供的encodingName没有合适的结果,encodingType变量的结果值将无效。

09-04 11:21