Я пытаюсь проанализировать XML-файл, который был создан внутри моей компании. Предполагается, что файл будет кодироваться в кодировке UTF-16, но я получаю сообщение об ошибке с написанным мной сценарием Python (см. Ниже). Я пытаюсь выяснить, есть ли проблема с файлом или моим скриптом. Есть ли способ проверить кодировку? Все мои поиски завершились инструментами проверки XML или инструментами, которые проверяют корректно сформированный XML. Я надеялся попробовать XMLSpy, но в настоящее время у меня нет доступа к нему.Как проверить кодировку xml
Код, который бросает ошибку является «parser.parse» линия (Python 2.7):
from xml.sax import make_parser
from xml.sax.handler import ContentHandler
import codecs
parser = make_parser()
curHandler = XmlHandler()
parser.setContentHandler(curHandler)
parser.parse(codecs.open(infile, 'rb', fileEncoding))
где «входной_файл» является файл XML в вопрос и «fileEncoding» в данном случае является " UTF-16' .
Сценарий отлично работает в кодированных файлах UTF-8. Но с UTF 16-файлов я получаю следующее сообщение об ошибке:
xml.sax._exceptions.SAXParseException: XmlFile.xml:1:30: encoding specified in XML declaration is incorrect
Мне очень жаль, но я не могу отправить XML. Это не сложно, но содержит слова/имена из нескольких зарубежных стран. Мое текущее подозрение в том, что кодировка UTF-8, но атрибут кодирования устанавливается в UTF-16. Есть ли способ проверить это?
ОБНОВЛЕНИЕ: ОК. Так что теперь я совершенно смущен. Я изменил кодировку в файле XML на UTF-8 вместо UTF-16, но забыл изменить его в скрипте. Скрипт работал так, как ожидалось. Таким образом, кодировка файла = 'UTF-8', но открыта с помощью:
работает как ожидалось, без ошибок.
Дополнительная информация: Я разрабатываю/выполняю в среде Win7/Server 2008.
Спасибо за ваш ответ. В спецификации отображается FF FE, поэтому я предполагаю, что кодировка UTF-16LE, но я пытаюсь выяснить, есть ли способ проверить правильность кодирования файла? – LVerwolf