重音的NSString编码显示疯狂的字符

时间:2011-08-10 04:42:51

标签: iphone ios ipad encoding nsstring

我正在从服务器下载数据(文本)。

我尝试过两种方式:NSISOLatin1StringEncodingNSASCIIStringEncoding

但是我一直在看:{"estado":"M\u00e9xico"}

注意它应该是México而不是M\u00e9xico(重点是e)。

在线查看我认为\u00e9实际上是é link.

但NSString无法解释这一点,而是在我的UILabels上打印出奇怪的东西:

enter image description here

我真的非常感谢你对此的帮助。

Alsso,如果您有兴趣,可以从这里下载数据:http://www.miorden.com/demo/iphone/estadoJSON.php

NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://www.miorden.com/demo/iphone/estadoJSON.php"]];

NSString *string = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];

NSLog(@"Downloaded: %@", string);    

string = [NSString stringWithContentsOfURL:[NSURL URLWithString:@"http://www.miorden.com/demo/iphone/estadoJSON.php"] encoding:NSISOLatin1StringEncoding error:nil];

NSLog(@"Downloaded: %@", string);

我几天都在努力试图杀了我!

非常感谢你!

2 个答案:

答案 0 :(得分:3)

这似乎是unicode,请尝试NSUTF8StringEncoding。

答案 1 :(得分:1)

数据采用JSON格式,因此您也需要对其进行JSON解码。

例如使用:https://github.com/TouchCode/TouchJSON

NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://www.miorden.com/demo/iphone/estadoJSON.php"]];

NSError *error;
NSArray *array = [[CJSONDeserializer deserializer] deserializeAsArray:data error:&error];

NSLog(@"Test: %@", [[array objectAtIndex:11] valueForKey:@"estado"]);

输出

2011-08-11 09:35:45.742 enctest[63236:407] Test: México