Назад | Перейти на главную страницу

Почему Firefox не отображает HTML-код, сгенерированный AWstats?

Ошибка синтаксического анализа XML: неверный формат Расположение: https://awstats.example.org/reports/www.example.org/2011/06/awstats.www.example.org.xml Номер строки 603, столбец 34:

<tr><td class="aws">- Toile du Qu\uffffbec</td><td>363</td><td>363</td></tr>

Вышеупомянутое не совсем то, как это отображается благодаря странности уценки; вместо этого вы получаете отказоустойчивый юникод FFFF. Я не уверен, почему это проблема, так как vim делает это нормально, а в самом документе говорится

<?xml version="1.0" encoding="utf-8"?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

Есть ли параметр в awstats, который мне нужно включить для правильной обработки неамериканских символов?

Вы можете переключить awstats на использование 4.01 Transitional со следующей конфигурацией:

(из awstats.model.conf)

# If you prefer having the report output pages be built as XML compliant pages
# instead of simple HTML pages, you can set this to 'xhtml' (May not work
# properly with old browsers).
# Change : Effective immediatly
# Possible values: html or xhtml
# Default: html
#
BuildReportFormat=html

Этот DOCTYPE указывает браузеру использовать XHTML Strict. XHTML диктует, что если в документе есть какие-либо ошибки, показывать ошибку вместо изящного ухудшения качества. Это одна из основных причин, почему никто не использует XHTML (Strict). XHTML - это грамматика для XML-документа. Таким образом, любой действительный документ XHTML также является действительным документом XML. Спецификация XML не разрешает суррогатные блоки Unicode 0xFFFE и 0xFFFF. Видеть Вот.

Я не знаю, можно ли что-нибудь сделать, чтобы исправить AWStats. В качестве теста вы можете попробовать изменить DOCTYPE на что-нибудь, кроме XHTML Strict. Попробуйте HTML 4.01 или HTML5. Тогда вместо того, чтобы выдавать ничего, кроме ошибки, браузер все равно может что-то показывать. Попробуйте заменить символ 0xFFFF ссылкой на символьный объект. Во всяком случае, мне интересно, почему у вас там 0xFFFF. Похоже, это должна быть буква е с акцентом, что определенно не 0xFFFF.