更具体的关于从php服务器发送带有utf8的json到iphone

时间:2011-06-30 17:53:05

标签: php objective-c json

我们有php服务器以utf-8编码发送json字符串。 我负责获取数据的iphone应用程序。

我想确保在我身边一切都是正确的:

//after I downlad the data stream :

NSString* content = [[NSString alloc] initWithData:self.m_dataToParse encoding:NSUTF8StringEncoding];

//here the data is shown correctly in the console

NSLog(@"%@",content);

SBJsonParser *_parser = [[SBJsonParser alloc]init];

NSDictionary *jsonContentDictionary = [_parser objectWithData:self.m_dataToParse];

//here, when i printer values of array IN array, i see \u454 u\545 \4545 format. any ideas why ?

for(id key in jsonContentDictionary)

{

NSLog(@"key:%@, value:%@,key, [ jsonContentDictionary objectForKey:key]);

}

即时通讯使用最新版本的json库: https://github.com/stig/json-framework/

问题是iphone方面? (json解析器?)或在php服务器?

再说一遍: 1.在控制台上,在json之前,字符串看起来是o.k 2.执行json后,数组值中的数组格式为\u545 \u453 \u545

提前致谢。

1 个答案:

答案 0 :(得分:0)

您的代码是正确的。 问题的一个可能原因,你必须用你的内容提供者(发送json给你的服务器)调查它,即使整个json字符串被正确编码为utf-8(记住:json文本是一个字符序列,因此必须指定编码),可能会发生一些或所有文本内容(即json消息中包含的单个对象的值)最初以另一种格式编码,通常这是html -encoding(iso-8859),特别是在使用特定字符时(例如西里尔文或亚洲文)。现在json框架默认将所有数据解码为utf-8,但是如果utf-8字符和iso-8859之间存在编码不匹配(只是为了保留在示例中),那么在utf-中转换它们的唯一方法8是使用\ u格式。这种情况经常发生,特别是当php脚本从html页面提取信息时,通常使用iso-8859进行编码。并且还要考虑iOS无法将整个iso-8859字符集转换为unicode(例如:cyrillic)。 可能的解决方案是: - 做文本服务器端的内容编码(iso-8859 - > utf-8) - 或者如果这是不可能的话,那么您可以更好地识别来自内容提供商的\ uxxx序列,并用相应的utf-8字符替换它们。