【问题标题】:NSData to NSString encoding returns gibberishNSData 到 NSString 编码返回乱码
【发布时间】:2012-04-13 13:57:42
【问题描述】:
我正在通过 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];
感谢您的帮助
【问题讨论】:
标签:
ios
encoding
nsstring
nsdata
【解决方案1】:
你可以试试这样的:
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
祝你好运!
【解决方案2】:
您的网页可能未将其内容编码为 UTF-8。您需要使用与网页相同的编码。
编辑:还要注意receivedBytes 在连接完成之前无效。在 didReceiveData 中间不能将数据转换成字符串。
附带说明,为此使用initWithData:encoding: 更容易。