Кодировка NSString для акцентов отображает сумасшедшие символы - PullRequest
2 голосов
/ 10 августа 2011

Я загружаю данные (текст) с сервера.

Я пробовал оба: NSISOLatin1StringEncoding и NSASCIIStringEncoding

Но я продолжаю видеть такие вещи, как: {"estado":"M\u00e9xico"}

Отмечая, что должно читаться México, а не M\u00e9xico (с ударением на е).

Глядя онлайн, я понял, что \u00e9 на самом деле é ссылка.

Но 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 ]

3 голосов
/ 10 августа 2011

Это похоже на Unicode, попробуйте NSUTF8StringEncoding.

1 голос
/ 10 августа 2011

Данные представлены в формате 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...