【问题标题】:Two charset tags on a page, which to take?一个页面上有两个字符集标签,取哪个?
【发布时间】:2009-08-05 14:48:14
【问题描述】:

我正在抓取页面以获取信息,并且在使用 Groovy 解析页面时遇到了许多问题。我制作了半解决方案,大部分时间都使用juniversal chardet并仅扫描页面以查找头部的标签,但有时会在一个页面上找到其中两个标签,例如:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
...
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

是否有一个使用标准(第一个,最后一个,两者都......?)或更简单的方法来做到这一点?谢谢。

【问题讨论】:

    标签: java html parsing groovy web-crawler


    【解决方案1】:

    我会试探性地这样做:

    • 一切都是ASCII码吗?如果是这样,您使用哪一个都没关系。
    • 它是否符合有效的 UTF-8?如果是这样,我会使用它。
    • 否则,请使用 ISO-8859-1。

    您可能还想查看从 Web 服务器返回的内容类型标头...

    从根本上说,页面已损坏,但以上内容应该给出一个合理的“最佳猜测”。

    【讨论】:

      【解决方案2】:

      HTML 规范未定义此行为。同一个文档中不能有两个单独的内容类型标签。由于您可能无论如何都必须解析此文档,因此最好的办法是对开发人员的意图做出有根据的猜测。

      【讨论】:

        猜你喜欢
        • 2012-01-29
        • 2014-07-26
        • 2011-06-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-29
        • 2012-01-12
        相关资源
        最近更新 更多