(dbr: оригинальный постер использует NSXMLParser, а не NSXMLDocument, поэтому для него нет способа setCharacterEncoding
для переопределения.)
Оператору: чтобы проверить вашу ситуацию, я написал простую утилиту командной строки, которая использует NSXMLParser для анализа XML-документа с помощью инструкции обработки <?xml version="1.0" encoding="windows-1252"?>
. Синтаксический анализ всегда завершается неудачно, и код ошибки равен 31, что соответствует перечислению NSXMLParserUnknownEncodingError
.
Чтобы решить эту проблему, возможно, вам придется предварительно обработать ваши входные данные. Одним из способов сделать это может быть использование [NSString stringWithCString:yourCstring encoding:NSWindowsCP1252StringEncoding]
, где yourCstring
- это стандартный C char*
, содержащий ваш XML. Затем вы можете удалить инструкцию обработки <?xml version="1.0" encoding="windows-1252"?>
, преобразовать строку NSString в NSData и передать ее в NSXMLParser.