Java自动检测编码http响应主体

时间:2016-10-12 08:04:57

标签: java character-encoding

我有下载网页和处理正文的程序,我在检测某些页面的编码时遇到问题,特别是如果在标题或html内容中没有添加信息,是否有一种方法在java中自动检测并评估响应的String或html主体的char编码?

2 个答案:

答案 0 :(得分:1)

查看juniversalchardet,它是Mozilla编码检测器库的Java端口。

以下是检查编码是否为UTF-8的示例程序。

protected static boolean validUTF8(byte[] input) { 
  UniversalDetector detector = new UniversalDetector(null); 
  detector.handleData(input, 0, input.length); 
  detector.dataEnd(); 
  if ("UTF-8".equals(detector.getDetectedCharset())) { 
   return true; 
  } 
  return false; 
 } 

答案 1 :(得分:0)

作为替代答案,我建议: URLConnection.guessContentTypeFromStream(InputStream is)流必须支持标记,guessContentTypeFromName(String fname)(是的,我知道这听起来很愚蠢,但效率非常高。)

当然,首先你必须得到HttpURLConnection主体的Stream,有点像InputStream is = response.getInputStream();