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 

祝你好运!

+0

或者只是从响应的HTTP头域解析编码。 – 2012-03-30 00:34:41