NSData到NSString编码返回乱码
问题描述:
我通过NSURLConnection下载HTML页面,它给了我最后的HTML页面NSData表示。我需要将此NSData转换为NSString以解析它。我的问题是,这个页面使用特殊字符,如“ěščřýáááííé”等,当我将NSData转换为NSString时,我得到了一些类似“-ì¬≠”而不是“í”等的jibrish。知道问题是与编码,但我不知道如何克服这个问题...我不太了解编码,但我发现该网站使用utf-8(和那些字符在捷克),所以我'可真在死胡同......NSData到NSString编码返回乱码
这里是我的代码:
NSString* docHTML = [[NSString alloc] initWithBytes: [self.receivedData bytes] length:[self.receivedData length] encoding: NSUTF8StringEncoding];
感谢所有帮助
答
您的网页可能不编码它的UTF-8的内容。您需要使用与网页相同的编码。
编辑:另请注意,receivedBytes
在连接完成之前无效。您不能将数据转换为didReceiveData中间的字符串。
作为一个方面说明,它更容易使用initWithData:encoding:
。
答
你可以尝试这样的:
NSString *docHTML;
docHTML = [[NSString alloc] initWithData:self.receivedData encoding:NSASCIIStringEncoding];
if (!docHTML)
{
NSLog(@"ASCII not working, will try utf-8!");
docHTML = [[NSString alloc] initWithData:self.receivedData encoding:NSUTF8StringEncoding];
}
//Do stuff with docHTML
祝你好运!
或者只是从响应的HTTP头域解析编码。 – 2012-03-30 00:34:41