2012-04-14 41 views
0

我正在抓取JSON供稿,但奇怪的字符出现在JSON供稿中。例如pass \ u00e9表示passé。我已经UTF-8将其与NSUTF8StringEncodingUTF-8转换?

我使用的下一个JSON:

NSString *jsonString = [NSString 
         stringWithContentsOfURL:[NSURL URLWithString:UrlXml] 
         encoding:NSUTF8StringEncoding 
         error:nil]; 


    SBJSON *parser = [[SBJSON alloc] init]; 
    NSDictionary *results = [parser objectWithString:jsonString error:nil]; 

    parser = nil; 
+0

显示问题在哪里出现 - 在控制台或屏幕上? – QED 2012-04-14 20:16:46

+0

在屏幕上,我的桌面视图 – Jones 2012-04-14 20:26:50

+0

如果'jsonString'确定,那就是SBJSON的bug。否则,编码的选择是错误的。 – Costique 2012-04-14 20:46:34

回答

1

如果你从JSON提要接收数据中有文字文本pass\u00e9(10个ASCII字节在其中具有文字“反斜线”字符),那么数据不是UTF-8编码的。您应该改用NSNonLossyASCIIStringEncoding。该编码会将\u####序列转换为适当的Unicode字符。

+0

@Jones:检查JSON数据是否包含“pass \ u00e9”或“pass \\ u00e9”文本很重要。如果是后者,那么你得到的结果是正确的,你不应该试图改变你的解码代码;这是源数据不正确,所以它是您应该修复的源数据(或者让其所有者修复)。 – 2012-04-15 23:15:03