关于从php服务器向iphone发送带有utf8的json的更多详细信息
我们有一个php服务器,它以utf-8编码发送json字符串。 我负责获取数据的iphone应用程序 我想确保我这边的一切都是正确的:关于从php服务器向iphone发送带有utf8的json的更多详细信息,php,objective-c,json,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
//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]);
}
im使用最新版本的json库:
有问题的是iphone方面?(json解析器?)还是在php服务器中
我想再次澄清一下:
1.在控制台上,在json之前,字符串看起来没有问题
2.执行json后,数组值中的数组格式为\u545\u453\u545
提前感谢。您的代码是正确的。
问题的一个可能原因是,即使整个json字符串被正确编码为utf-8(请记住:json文本是一个字符序列,因此必须指定编码),部分或全部文本内容也可能发生错误,您必须向内容提供商(向您发送json的服务器)进行调查(即json消息中包含的单个对象的值)最初是以另一种格式编码的,通常是html编码(iso-8859),特别是在使用特定字符时(例如西里尔文或亚洲文)。现在json框架默认将所有数据解码为utf-8,但如果utf-8字符和iso-8859之间存在编码不匹配(仅保留在示例中)然后,在UTF-8中转换它们的唯一方法是使用\ U格式。这经常发生,尤其是当PHP脚本从HTML页面中提取信息时,通常使用ISO-88 59来编码。并且还考虑到IOS不能将整个ISO-88 59字符集转换成Unicode(例如:Cyric)。
因此,可能的解决办法是:
-对服务器端的文本进行内容编码(iso-8859-->utf-8)
-或者,如果这是不可能的,则由您来识别\uxxx序列,这些序列通常来自您的内容提供商,并用相应的utf-8字符替换它们