Bha*_*tap 2 iphone http objective-c nsstring nsstringencoding
我只是想知道是否有任何现有的类别或任何类型的函数将从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];
Run Code Online (Sandbox Code Playgroud)
有一个更好的办法.
您可以从URLResponse获取编码名称作为字符串,然后搜索相应的NSStringEncoding.
NSString *encodingName = [aURLResponse textEncodingName];
NSStringEncoding encodingType = CFStringConvertEncodingToNSStringEncoding(CFStringConvertIANACharSetNameToEncoding((CFStringRef)encodingName));
Run Code Online (Sandbox Code Playgroud)
也encodingName可能是nil,如果没有适当的结果,变量encodingName的结果值encodingType将无效.