NSURLConnection下载一个网页内容时,存储二进制数据到NSData对象中,现在要从NSData中提取网页内容到NSString,使用
NSUTF8StringEncoding作为编码格式时发现NSString对象为空,但是打印NSData却不空。其实有些网页编码使用的是GB2312的格式,现在要进行转码,大概如下:
NSStringEncoding encode = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);
NSString *htmlString = [[NSString alloc] initWithData:downloadData encoding:encode];
另外读取有些从网上下载的txt文件时也是需要用这种方式。
这么做的原因是在NSString.h头文件中有如下注释:
/* Note that in addition to the values explicitly listed below, NSStringEncoding supports encodings provided by CFString.
See CFStringEncodingExt.h for a list of these encodings.
See CFString.h for functions which convert between NSStringEncoding and CFStringEncoding.
*/