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>
由于 markdown 的怪异性,上面的内容并不是它所呈现的样子;相反,你得到的是 FFFF 的 unicode 故障框。我不确定为什么这是一个问题,因为 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 中的设置才能正确处理非美国字符?
答案1
您可以使用以下配置切换 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
答案2
DOCTYPE 指示浏览器使用 XHTML Strict。XHTML 规定,如果文档中有任何错误,则显示错误而不是正常降级。这是没有人真正使用 XHTML(Strict)的主要原因之一。XHTML 是 XML 文档的语法。因此,任何有效的 XHTML 文档也是有效的 XML 文档。XML 规范不允许使用 Unicode 代理块 0xFFFE 和 0xFFFF。请参阅这里。
我不知道您是否可以采取任何措施来修复 AWStats。作为测试,您可以尝试将 DOCTYPE 更改为除 XHTML Strict 之外的任何内容。尝试 HTML 4.01 或 HTML5。这样,浏览器可能仍会显示一些内容,而不是只给出错误。尝试用字符实体引用替换 0xFFFF 字符。无论如何,我想知道为什么那里有 0xFFFF。看起来那应该是一个重音符号 e,当然不是 0xFFFF。