我下载了一个HTML页面。 HTTP内容类型标头指定一个字符编码,页面具有指定另一个的meta
标记。处理这个问题的正确方法是什么?
我认为'正确'不是正确的词,因为无论如何都没有人遵守该死的标准......那么导致我最少问题的方式是什么?
答案 0 :(得分:13)
与webbrowsers一样:使用响应标头。当通过HTTP提供HTML时,如果存在响应标头,则元标记忽略。仅当从本地磁盘文件系统读取HTML时,才使用元标记。这也由w3 HTML spec明确指定。
总而言之,符合要求的用户代理必须 请注意以下优先事项 确定文档的字符 编码(从最高优先级到 最低):
- “Content-Type”字段中的HTTP“charset”参数。
- 将“http-equiv”设置为“Content-Type”的META声明 为“charset”设置的值。
- 在指定外部的元素上设置的charset属性 资源。
醇>
您使用的任何语言中任何现有的体面HTML解析器都应该考虑到这一点。根据您的问题历史,您熟悉Java,我建议您为此获取Jsoup。