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