在HTML中检测字符编码

Mik*_*zak 11 html http character-encoding

我下载了一个HTML页面.HTTP内容类型标头指定一个字符编码,页面具有meta指定另一个字符的标记.处理这个问题的正确方法是什么?

我猜'正确'不是正确的词,因为无论如何都没有人遵循该死的标准......那么什么方式会导致我最少的问题呢?

Bal*_*usC 13

与webbrowsers一样:使用响应头.通过HTTP提供HTML 时,如果存在响应标头,则会忽略元标记.仅当从本地磁盘文件系统读取HTML时,才使用元标记.这也是由w3 HTML规范明确指定的.

总而言之,在确定文档的字符编码(从最高优先级到最低优先级)时,符合要求的用户代理必须遵守以下优先级:

  1. "Content-Type"字段中的HTTP"charset"参数.
  2. META声明,其中"http-equiv"设置为"Content-Type",值为"charset"设置.
  3. charset属性设置在指定外部资源的元素上.

任何现有的体面HTML解析器都应该考虑到这一点.根据你的问题历史,你熟悉Java,我建议你抓住Jsoup.