页面上有两个charset标签,需要哪些?

时间:2009-08-05 14:48:15

标签: java html parsing groovy web-crawler

我正在抓取页面以获取信息,并且在使用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" />

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

2 个答案:

答案 0 :(得分:3)

我会启发式地做到这一点:

  • 一切都是ASCII吗?如果是这样,你使用哪个并不重要。
  • 是否符合有效的UTF-8?如果是的话,我会用它。
  • 否则,请使用ISO-8859-1。

您可能也希望查看从Web服务器返回的内容类型标题...

从根本上说,页面已被破坏,但上面应该给出合理的“最佳猜测”。

答案 1 :(得分:0)

HTML规范未定义此行为。您不能在同一文档中包含两个单独的内容类型标记。既然大概你不得不解析这个文档,你最好的办法是对开发者的意图进行有根据的猜测。