在解析html网页的过程中不免会遇到一些gb2312编码的网页,若是对这类网页进行类似于utf-8的解析方法进行解析,最后content里的中文显示会出现乱码情况,即使对字符串进行gb2312的再次解码也无济于事。
因此我们需要改变思路:
第一步,用bg2312的编码得到一个NSString的网页内容。
第二步,使用stringByReplacingOccurrencesOfString的方法,将网页中的”gb2312“替换成“utf-8”。
第三步,将替换后的NSString使用dataUsingEncoding的方法,转换成NSData给TFHpple使用。
现在的思路其实就是先将gb2312转换成utf-8然后再进行解析,接下来的工作相信大家都明白就不再次赘述。
示例代码如下:
NSString *html = [NSString stringWithContentsOfURL:url encoding:CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000) error:nil];
NSString *newHTML = [html stringByReplacingOccurrencesOfString:@"gb2312" withString:@"utf-8"];
NSData *newData = [newHTML dataUsingEncoding:NSUTF8StringEncoding];
NSString *currectString = [[NSString alloc] initWithData:newData encoding:NSUTF8StringEncoding];