如何解码NSString中的html编码字符?

时间:2011-09-22 14:47:25

标签: iphone ios character-encoding nsstring

我正在编写一个支持英语和法语的应用程序。应用程序从服务器请求信息,服务器响应使用JSON。我正在使用JSONKit库来解析响应,但是从法语响应中解析的字符串如下所示:

Membres –Économisez 5% sur les services et jusqu’à 15% sur d’autres produits

如何解码特殊字符?所以我明白了:

Membres-Économisez5%sur les servicesetjusqu'à15%sur d'autres produits

我查看了NSString的API并尝试了一些实例方法,但我对字符编码知之甚少,最后得到了一些奇怪的结果。因此,如果您还可以提供有关字符编码的简要说明,我真的很感激。

提前致谢

3 个答案:

答案 0 :(得分:4)

答案 1 :(得分:3)

使用正确的字符串编码的NSString stringByReplacingPercentEscapesUsingEncoding应该可以做到这一点。

[yourString stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

可能是一个很好的候选人。

答案 2 :(得分:2)

如果你仍在使用Objective C代码,这个解决方案对我来说效果很好。

- (NSString *)decodeHtmlStringValue
{
  NSData *encodedString = [self dataUsingEncoding:NSUTF8StringEncoding];
  NSAttributedString *htmlString = [[NSAttributedString alloc] initWithData:encodedString
                                                                    options:@{NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType, NSCharacterEncodingDocumentAttribute: [NSNumber numberWithInt:NSUTF8StringEncoding]} documentAttributes:nil error:nil];
  return [htmlString string];
}

如果你使用swift

https://stackoverflow.com/questions/25607247/how-do-i-decode-html-entities-in-swift