在将包含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]]);
答案 0 :(得分:2)
这些字符是八进制转义码。我更喜欢看十六进制的东西。十字架中\327
和\237
为0xD7
和0x9F
。
我查了U+00D7
和U+009F
(unicode字符)。它们是MULTIPLICATION SIGN和APPLICATION PROGRAM COMMAND。在这种情况下这没有意义,所以直接转换不是要走的路。
接下来,我想UTF-8编码。 D7 9F
decodes为U+05DF
。这是希伯来语最后的证书。在这种情况下这是有道理的。
所以,我猜你在UTF-8字符中看到的数据是不理解的,八进制转义。 JSON不支持八进制转义,所以我猜它是NSLog()
或者你用来打印正在进行转义的JSON的任何东西。