NSArray из проблемы кодирования URL - PullRequest
1 голос
/ 26 мая 2009

Итак, у меня есть следующий код:

NSURL *baseURL = [NSURL URLWithString:@"http://www.baseurltoanxmlpage.com"];
NSURL *url = [NSURL URLWithString: @"page.php" relativeToURL:baseURL];
NSArray *array = [NSArray arrayWithContentsOfURL:url];

Если страница XML выглядит следующим образом:

<array><dict><key>City</key><string>Montreal</string></dict></array>

Массив возвращается нормально. Однако, если файл XML выглядит следующим образом:

<array><dict><key>City</key><string>Montréal</string></dict></array>

Массив возвращает ноль. Я думаю, это как-то связано со специальным символом "é". Как бы я справился с этими персонажами? Страница XML генерируется с помощью PHP. Функция utf8_encode () возвращает массив, но тогда я не знаю, что делать с закодированным символом «é».

Вот рабочее решение:

NSString *stringArray = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];
NSArray *array = [stringArray propertyList];

NSLog(stringArray);
NSLog(@"%@", array);
NSLog([[[array objectAtIndex:0] valueForKey:@"City"] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]);

Первый журнал печатает штраф "é". Во втором журнале он кодируется и печатается как "\ U00e9". В третьем журнале он декодируется и печатается как «é» (именно это я и искал).

Ответы [ 3 ]

2 голосов
/ 26 мая 2009

Как вы заметили, вам нужно вернуть XML-документ в кодировке UTF8 или UTF16. Затем создайте NSString объекты, используя метод stringByReplacingPercentEscapesUsingEncoding:, используя соответствующую кодировку.

1 голос
/ 26 мая 2009

NSString имеет метод для возврата данных в кодировке , данные считываются с URL:

+ (ID) stringWithContentsOfURL: кодирование: ошибка:

В разделе Строковые кодировки указаны возможные кодировки, чтобы найти подходящую.

0 голосов
/ 27 мая 2009

Глядя на документацию NSString для :propertyList, мы видим:

  • Parses the receiver as a text representation of a property list, returning an NSString, NSData, NSArray, or NSDictionary object, according to the topmost element.

A список свойств - это документ Apple, в котором хранятся представления NSString, NSDictionary, NSArray и других основных типов в формате XML. Эти .plist файлы обычно используются для хранения настроек или настроек приложения.

Этот документ списка свойств в формате XML по умолчанию кодируется в UTF-8 . Когда вы превращаете ваш NSString в элемент списка свойств, кодировка символа "é" заменяет его на символ UTF-8 Unicode "\U00e9".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...