我正在制作一个使用套接字和JSON与nodejs-server对话的应用程序,并且由于iOS 5拥有自己的NSJSONSerialization,我认为这可能是要遵循的道路。之前,我使用了轻量级的yail库。
无论如何,在迁移到NSJSONSerialization之后我开始遇到编码问题,在更改之前,字符Ö
会很好地发送到服务器并返回,仍然是Ö
,但现在, NSJSONSerialization仍将Ö
留在unicode char中,即\U00f6
。
阅读文档说默认情况下JSON对象转换为UTF8。当我将服务器的响应转换为简单的NSString时,Ö
就像预期的那样显示出来,但当然它仍然是JSON。
请帮我解决一下你的想法,我应该回到yail还是使用内置的NSJSONSerialization?
谢谢你, 西蒙
答案 0 :(得分:3)
NSLog调用其参数的描述,这恰好打印了Unicode代码而不是字符本身。试试例如:
NSLog(@"%@", [NSDictionary dictionaryWithObject:@"ö" forKey:@"hello"]);
你会看到它打印
{
hello = "\U00f6";
}
所以,很有可能你的JSON解码已经完成了。
答案 1 :(得分:0)
JSONSerialization只能用于某些类型:NSString,NSNumber,NSArray,NSDictionary或NSNull默认情况下......如果您需要在JSON中使用其他对象,我建议使用https://github.com/johnezang/JSONKit