Проблема с кодировкой символов libxml на win32

При разборе некоторых html-файлов с помощью libxml функция xmlParseFile() возвращает, что код содержит символы, отличные от UTF-8. Как я могу изменить кодировку библиотеки по умолчанию на ISO-8859-1? Есть ли другой способ решить это?

PS: Вся разработка основана на libxml и работает в большинстве случаев, поэтому я не могу переключиться на другую библиотеку.


person Community    schedule 13.08.2009    source источник
comment
Я не уверен, что понимаю. Вы получаете символы, отличные от UTF-8, поэтому хотите переключиться на более ограничительную кодировку (8859)? Как это поможет?   -  person ars    schedule 14.08.2009


Ответы (1)


Кодировка, используемая для данных XML, должна быть указана в прологе XML. Если кодировка не указана, спецификация XML W3 указывает, что вместо этого следует использовать UTF-8.

Почему вы используете синтаксический анализатор XML для анализа данных HTML? libxml имеет анализатор HTML, отдельный от анализатора XML. Посмотрите на htmlParseFile() и связанные с ним функции. Поскольку HTML не является XML, не было бы пролога XML для указания кодировки данных. Однако в HTML есть доступный тег <meta>, который можно использовать для этого внутри тега <head>. HTML-анализатор libxml ищет этот тег для определения кодировки, если он не передается явно в htmlParseFile() напрямую.

person Remy Lebeau    schedule 14.08.2009