Исключение возникает при попытке разобрать xml, содержащий специальные символы - PullRequest
0 голосов
/ 02 ноября 2011

Все Я разрабатываю приложение, которое использует XML в качестве протокола связи между клиентом и сервером. Когда сервер отправляет ответ, ответ содержит имена пользователей. Теперь имена пользователей должны содержать специальные символы. Когда следующая строка выполняется, я вижу, что CXMLDocument не может разобрать такой XML-документ.

CXMLDocument *theXMLDocument = [[[CXMLDocument alloc] initWithXMLString:response options:0 error:&theError] autorelease];

Где ответ - строка, содержащая документ XML. Под специальными символами я подразумеваю расширенные символы ASCII, которые имеют значение ASCII больше 128. У кого-нибудь есть какое-либо решение этой проблемы? С наилучшими пожеланиями

1 Ответ

0 голосов
/ 02 ноября 2011

Когда вы читаете в ответ, вам нужно убедиться, что вы используете правильную кодировку символов, чтобы превратить необработанные данные в строку.

В документе XML обычно указывается кодировка в начале файла в

<?xml version="1.0" encoding="UTF-8"?>
                              ^^^^^ the encoding that was used in the file.

Конечно, это может быть ложью. В любом случае, для создания вашей строки вам нужно указать кодировку, которая использовалась сервером, который сгенерировал данные.

Так что я угадываю здесь, но где-то у вас, вероятно, есть что-то вроде

response = [[NSString alloc] initWithData: responseData encoding: someEncoding];

Необходимо убедиться, что кодировка - это кодировка, которая использовалась для создания XML-сообщения, которое вы декодируете.

...