#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-сообщения, которое вы декодируете.