Принудительное кодирование плохих файлов XML с помощью ElementTree - PullRequest
2 голосов
/ 11 марта 2011

Большой набор файлов XML имеет неправильную кодировку. Это должен быть utf-8, но содержание везде содержит символы латинского алфавита. Как лучше всего проанализировать этот контент?

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

Редактировать: это происходит с файлами Adobe InDesign IDML, похоже, что текст «Содержимое» имеет латиницу-1, а остальное может быть utf-8. Я предпочитаю обычный синтаксический анализ с помощью utf-8, затем перекодирую текстовые блоки Unicode в Content в utf-8, а затем повторный анализ с помощью latin-1. Что за беспорядок ಠ_ಠ

Ответы [ 2 ]

2 голосов
/ 11 марта 2011

Вы можете переопределить кодировку, указанную в XML, при ее разборе:

class xml.etree.ElementTree.XMLParser(html=0, target=None, encoding=None)

Element построитель структуры для исходных данных XML, основанный на парсере экспатов. HTML являются предопределенные сущности HTML. Этот флаг не поддерживается текущим реализация. target является целью объект. Если опущено, строитель использует экземпляр стандарта Класс TreeBuilder. кодировка 1 является необязательный. Если дано, значение переопределяет кодировку, указанную в XML-файл.

* Docs 1013 *

1 голос
/ 11 марта 2011

Не пытайтесь справиться с проблемами кодирования во время разбора, но предварительно обработайте поврежденный файл (ы).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...