【发布时间】:2011-12-29 13:50:22
【问题描述】:
这是开始——我在磁盘上有一个文件,它是 HTML 页面。当我使用常规网络浏览器打开它时,它会按原样显示 - 即无论使用什么编码,我都会看到正确的国家字符。
然后我来了——我的任务是加载同一个文件,解析它,然后在屏幕(控制台)上打印出一些片段——比如说,所有的
因此解析器也必须以两种方式解析和处理编码。到目前为止,我还不知道解析器甚至能够正确加载数据。
问题
你会推荐什么解析器?
详情
HTML 页面通常具有标头(在元标记中)中给出的编码,因此解析器应该使用它。我必须提前查看并检查编码,然后在代码中手动设置编码的场景是行不通的。例如,这是取自 JSoup 教程:
File input = new File("/tmp/input.html");
Document doc = Jsoup.parse(input, "UTF-8", "http://example.com/");
我不能这样做,解析器必须自己处理编码检测。
在 C# 中,我在加载 html 时遇到了类似的问题。我使用 HTMLAgilityPack 并首先执行编码检测,然后使用它对数据流进行编码,然后解析数据。所以,我明确地做了这两个步骤,但由于库提供了这两种方法,所以我觉得很好。
这样的显式分离可能会更好,因为它可以在缺少标头概率编码检测方法的情况下使用。
【问题讨论】:
标签: java html encoding html-parsing