NSData到NSString编码返回乱码

时间:2012-03-29 21:06:11

标签: ios encoding nsstring nsdata

我正在通过NSURLConnection下载html页面,它最后给出了html页面的NSData表示。我需要将此NSData转换为NSString以便解析它。我的问题是这个页面使用了特殊的字符,如“ěščřžáááíéé”等等。当我将NSData转换为NSString时,我会得到一些像“-ì≠”而不是“í”等jibrish。我知道问题是编码,但我不知道如何克服这个问题...我不太了解编码,但我发现该网站使用utf-8(这些字符是捷克语),所以我'我真的走到了尽头...

这是我的代码:

NSString* docHTML = [[NSString alloc] initWithBytes: [self.receivedData bytes] length:[self.receivedData length] encoding: NSUTF8StringEncoding];

感谢您的帮助

2 个答案:

答案 0 :(得分:3)

您的网页可能不会以UTF-8编码其内容。您需要使用与网页相同的编码。

编辑:另请注意,receivedBytes在连接完成之前无效。您无法在didReceiveData中间将数据转换为字符串。

作为旁注,使用initWithData:encoding:更容易。

答案 1 :(得分:0)

您可以尝试以下内容:

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
祝你好运!