将NSArray转换为JSON时获取奇怪的字符

时间:2013-09-16 09:19:22

标签: iphone ios objective-c json nsdictionary

在将包含NSDictionaries的NSArray转换为JSON字符串时,我得到了一些奇怪的字符。 我尝试使用SBJson和NSJSONSerialization同样的结果。

NSDictionary填充了地址簿的内容,包括联系人姓名,电子邮件和电话号码,大部分都是希伯来语。

字符看起来像这样:

  

\ 327 \ 237

我找不到任何关于此的信息,帮助任何人?

提前致谢!

编辑 *

以下是JSON的片段:

[
    {"fname":"סתם טקסט"},
    {"fname":"סתם טקסט"},
    {"fname":"נ\327\231ר"}
]

它应该是:     [         {“fname”:“סתםטקסט”},         {“fname”:“סתםטקסט”},         { “FNAME”: “ניר”}     ]

我使用以下代码获取JSON:

    NSData *jsonData = [NSJSONSerialization dataWithJSONObject:ContactsArray options:NSJSONReadingMutableLeaves error:&err];
    NSLog(@"JSON: %@", [NSString stringWithUTF8String:[jsonData bytes]]);

1 个答案:

答案 0 :(得分:2)

这些字符是八进制转义码。我更喜欢看十六进制的东西。十字架中\327\2370xD70x9F

我查了U+00D7U+009F(unicode字符)。它们是MULTIPLICATION SIGN和APPLICATION PROGRAM COMMAND。在这种情况下这没有意义,所以直接转换不是要走的路。

接下来,我想UTF-8编码。 D7 9F decodesU+05DF。这是希伯来语最后的证书。在这种情况下这是有道理的。

所以,我猜你在UTF-8字符中看到的数据是不理解的,八进制转义。 JSON不支持八进制转义,所以我猜它是NSLog()或者你用来打印正在进行转义的JSON的任何东西。