NSJSONSerialization JSONObjectWithData:options:error: 编码问题
Posted
技术标签:
【中文标题】NSJSONSerialization JSONObjectWithData:options:error: 编码问题【英文标题】:NSJSONSerialization JSONObjectWithData:options:error: encoding issue 【发布时间】:2013-05-09 15:35:30 【问题描述】:在我的代码中,我下载了UTF8
中编码的JSON
数据,这是与NSJSONSerialization
一起工作的理想选择,但是当我得到解析的对象时,它充满了编码问题,例如:
“Jo\U00e3o e Maria - Ca\U00e7adores de Bruxas”
(必须是“João e Maria - Caçadores de Bruxas”)。尝试用 ASCII、Unicode 等重新编码,但没有成功:
NSData *downloadedData = [NSURLConnection sendSynchronousRequest:[NSURLRequest requestWithURL:requestURL cachePolicy:cachePolicy timeoutInterval:timeoutInterval] returningResponse:NULL error:&error];
NSDictionary *serializedDictionary = [NSJSONSerialization JSONObjectWithData:downloadedData options:NSJSONReadingAllowFragments error:&error];
编辑:当我使用它打印时,它显示正确:
NSLog(@"Test: %@", [[NSString alloc] initWithData:downloadedData encoding:NSUTF8StringEncoding]);
【问题讨论】:
所以没有问题了吗? 你如何检查解析的数据?如果您使用的是 NSLog,它可能会打印出转义字符,例如 \U00e3 for ã。 谢谢,我在 NSLog 中测试它,因为我仍然没有 UI 可以使用,但在 UILabel 中它可以工作。 【参考方案1】:这些是 UTF8 编码的字符。格式正确,将它们放在UILabel
或其他东西上,它们就会如你所愿地出现。
【讨论】:
【参考方案2】:如果您需要精美的文字本身,请尝试
NSString * s = [NSString stringWithUTF8String:[<your_string> UTF8String]];
【讨论】:
以上是关于NSJSONSerialization JSONObjectWithData:options:error: 编码问题的主要内容,如果未能解决你的问题,请参考以下文章
NSJSONSerialization - 无法将数据转换为字符串
Swift 2 - NSJSONSerialization.JSONObjectWithData 处理错误 [重复]
使用 NSJSONSerialization 解析 twitter 搜索 json 数据
使用 NSDictionary 访问 NSJSONSerialization 数据