我下载一个 HTML 页面。 HTTP 内容类型 header 指定一种字符编码,页面有一个 meta
标记指定另一种。正确的处理方法是什么?
我想“正确”这个词不合适,因为反正没有人遵循该死的标准……那么怎样才能使我的问题最少?
最佳答案
做与网络浏览器相同的事情:使用响应头。当通过 HTTP 提供 HTML 时,如果存在响应 header ,元标记将被忽略。仅当从本地磁盘文件系统读取 HTML 时,才使用 meta 标记。 w3 HTML spec 也明确指定了这一点.
To sum up, conforming user agents must observe the following priorities when determining a document's character encoding (from highest priority to lowest):
- An HTTP "charset" parameter in a "Content-Type" field.
- A META declaration with "http-equiv" set to "Content-Type" and a value set for "charset".
- The charset attribute set on an element that designates an external resource.
无论您使用何种语言,任何现有的体面的 HTML 解析器都应该已经考虑到这一点。根据您熟悉 Java 的问题历史记录,我建议您获取 Jsoup为此。
关于html - 检测 HTML 中的字符编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5436452/