我有这段代码:
DocumentBuilderFactory builderFactory =
DocumentBuilderFactory.newInstance();
DocumentBuilder builder = null;
try {
builder = builderFactory.newDocumentBuilder();
} catch (ParserConfigurationException e) {
e.printStackTrace();
}
Document document = null;
try {
URL url = new URL("http://en.wikipedia.org/wiki/Charlie_Chaplin");
//Reader reader = new InputStreamReader(url.openStream(),"UTF-8");
document = builder.parse(url.openStream());
} catch (SAXException e) {
e.printStackTrace();
return;
} catch (IOException e) {
e.printStackTrace();
return;
}
在我尝试处理的页面上,我遇到以下异常:
com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException:1字节UTF-8序列的字节1无效。
如何将页面更改为UTF-8?或者,我可以用其他方式解决这个问题吗?
答案 0 :(得分:1)
您正在尝试使用XML解析器阅读HTML。你的角色集只是问题的开始。
您需要一个适当的HTML解析器。如果你想要一个类似DOM的结构,我推荐http://jsoup.org/。如果您只想要文本,可以使用Apache Tika。
如果你坚持将它提供给XML解析器,你可以将字节读入缓冲区,然后使用Tika中的字符编码检测器来发现编码,然后转换为String,并将String提供给DOM解析器。