【问题标题】:How do I decode html coded characters in an NSString?如何解码 NSString 中的 html 编码字符?
【发布时间】:2011-11-22 22:10:23
【问题描述】:

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

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

如何解码特殊字符?所以我得到了这个:

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

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

提前致谢

【问题讨论】:

标签: iphone ios character-encoding nsstring


【解决方案1】:

如果您仍在使用 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

【讨论】:

    【解决方案2】:

    使用正确的字符串编码的 NSString stringByReplacingPercentEscapesUsingEncoding 应该可以发挥作用。

    [yourString stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    

    可能是个不错的人选。

    【讨论】:

    • 我试过了: NSString *myString = [myOtherString stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];但它返回null。我检查了 myOtherString,它包含编码字符串。
    • 文档指出:如果无法进行转换,则返回 nil,例如,百分比转义给出的字节序列在编码中是不合法的。
    • 这是百分比解码,问题是要求html代码解码
    【解决方案3】:

    【讨论】:

    • 我将如何使用它?可能是一个愚蠢的问题,但我对 iPhone 编程还是很陌生
    • 将该文件及其匹配的 h 头文件添加到您的项目中。然后 NSString 将有一个名为 stringByDecodingHTMLEntities 的新实例方法。 NSString *decodedString = [encodedString stringByDecodingHTMLEntities];
    猜你喜欢
    • 2011-05-13
    • 2011-05-03
    • 1970-01-01
    • 2010-11-09
    • 1970-01-01
    • 2010-10-29
    • 1970-01-01
    • 2011-12-28
    • 1970-01-01
    相关资源
    最近更新 更多