我只是想知道是否有任何现有的类别或任何类型的函数,将返回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
变量的结果值将无效。