Исключение возникает при попытке проанализировать xml, содержащий специальные символы

#objective-c #xml #parsing #ascii

#objective-c #xml #синтаксический анализ #ascii

Вопрос:

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

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

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

Ответ №1:

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

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

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

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

Итак, я предполагаю здесь, но где-то у вас, вероятно, есть что-то вроде

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

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