没有 http-equiv 元标记且字符集可能不是 UTF-8 的 HTML 文件

Posted

技术标签:

【中文标题】没有 http-equiv 元标记且字符集可能不是 UTF-8 的 HTML 文件【英文标题】:HTML files with no http-equiv meta tag and the charset may be other than UTF-8 【发布时间】:2014-04-13 10:51:13 【问题描述】:

我们正在使用 jsoup - 非常感谢。

我们可能会得到没有 http-equiv 元标记的 html 文件,并且字符集可能不是 UTF-8。 请问这个怎么处理最好。我们可以有一个编码列表并尝试它们,但我不确定如何以编程方式判断是否有问题。 jsoup 会抛出 IOException 吗?

【问题讨论】:

【参考方案1】:

Jsoup 将尝试通过 content type headerhttp equiv tag 来确定编码,如果您没有它们,它将使用 utf8。不确定 jsoup 是否可以在这里为您做更多的事情。

但你可以尝试另一种方法:

实现一个为您读取文件的类。在那里,您可以处理所有编码问题。因此,这样的类应该为您提供正确的编码字符串,或者至少为您的输入提供编码。

(html input) --> [encoding class] --normalized encoding--> [jsoup] --> (whatever)   

Jsoup 现在可以使用已知编码解析该输入。

我猜想改变 html-creation 是不可能的,不是吗?

进一步阅读:

http://illegalargumentexception.blogspot.co.uk/2009/05/java-rough-guide-to-character-encoding.html#javaencoding_autodetect Character Encoding Detection Algorithm What is the most accurate encoding detector?(包括实施列表) Java Text File Encoding Detect (or best guess of) incoming string encoding in Java

【讨论】:

谢谢。阅读:joelonsoftware.com/articles/Unicode.html 有帮助。 也有帮助。现在我undersatnd 更好的字符集与编码。我将所有设置都设置为 UTF-8。我放了一些中文 抱歉出现乱码。谷歌搜索提出 jsoup 不支持中文和日文字符集的建议。请问是这样吗。在 UTF-8 下,其他一切似乎都可以正常工作。 我没有用亚洲字符集测试过jsoup,但是如果你使用java的方法处理字符串然后用jsoup解析它也会失败。

以上是关于没有 http-equiv 元标记且字符集可能不是 UTF-8 的 HTML 文件的主要内容,如果未能解决你的问题,请参考以下文章

在 http-equiv 元标记内将内容类型设置为 utf-8 时获取重复的 http 请求

HTML5 是不是需要“字符集”元标记?

http-equiv="refresh" 是不是保留推荐人信息和元数据?

谷歌+元描述+换行=可能吗?

网站元数据meta标签

HTML HTML元刷新重定向页面 - 元http-equiv缓存控制pragma刷新