java - 页面上有两个字符集标签,该采用哪个?

标签 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" />

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

最佳答案

我会启发式地这样做:

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

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

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

关于java - 页面上有两个字符集标签,该采用哪个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1233756/

相关文章:

java - 如何使用 Open CSV 不将双引号加倍?

java - 在 Docker 容器上运行时创建名称为 'org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration' 的 bean 时出错

java - 通配符和 'T' 有什么区别?

HTML/Javascript 一键打印(无对话框)

javascript - 使用 Google Maps API V3 计算当前位置和不同位置之间的距离

parsing - 如何组合多个解析器?

java - 为什么我会收到 NullPointerException?

java - opennlp.tools.util.Span 类中的 getType()?

javascript - HTML - PHP 中的 'onclick' 确认函数

Python 为属性文件中的特定键设置值