测试了一下,搞定了,用NSString的stringByReplacingPercentEscapesUsingEncoding方法就可以了,可以这样子:
NSString* strAfterDecodeByUTF8AndURI = [@"%E4%B8%AD%E5%9B%BD" stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; NSLog(@"strAfterDecodeByUTF8AndURI=%@", strAfterDecodeByUTF8AndURI);
这个问题的本质时,首先这段内容是utf-8编码,然后又进行了URL Encode,所以解码的时候,先URL Decode,再utf-8解码即可
什么是url encode参见[url] http://www.stringfunction.com/url-decode.html[/url]
所以
stringByReplacingPercentEscapesUsingEncoding 方法是用于url decode
然后其中的参数NSUTF8StringEncoding是指定了UTF-8编码即可
网页转码:
NSURL *url = [NSURL URLWithString:urlStr]; NSData *data = [NSData dataWithContentsOfURL:url]; NSStringEncoding enc = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000); NSString *retStr = [[NSString alloc] initWithData:data encoding:enc];