2011-09-22 70 views
3

我正在写一个英文和法文支持的应用程序。该应用程序从服务器请求信息,服务器响应使用JSON。我现在用的是JSONKit库来解析响应,但其从法国的响应解析字符串是这样的:如何解码NSString中的html编码字符?

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

如何解码特殊字符?让我得到这个:

Membres – É conomisez 5%河畔莱服务等jusqu ’ à 15%河畔d ’其他残疾​​PRODUITS

我看着为NSString的API和尝试了一些实例方法,但我对字符编码知之甚少,最后我得到了一些奇怪的结果。所以如果你还可以提供关于字符编码的简单解释,我会非常感激。

在此先感谢

+0

可能重复:http://stackoverflow.com/questions/1105169/html-character-decoding-in-objective-c-cocoa-touch – mja

+0

可能的重复http://stackoverflow.com/questions/7513312/response-encryption-problem/7514003#7514003 – zaph

回答

4
+0

我将如何去使用它?可能是一个愚蠢的问题,但我仍然相当新的iPhone编程 –

+0

将该文件及其匹配的H头文件添加到您的项目。然后NSString将有一个名为stringByDecodingHTMLEntities的新实例方法。 NSString * decodedString = [encodedString stringByDecodingHTMLEntities]; –

+0

它不适用于iOS 6 –

3

的NSString stringByReplacingPercentEscapesUsingEncoding用正确的字符串编码应该做的魔力。

[yourString stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 

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

+1

我试过了:NSString * myString = [myOtherString stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];但其返回null。我检查了myOtherString,它包含编码的字符串。 –

+0

文档状态:如果转换不可行,则返回nil,例如,转义百分比给出的字节序列在编码中不合法。 –

+1

这是百分比解码,问题是要求html代码解码 –

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

+0

这对我有效。谢谢! – iAkki