尝试使用DOM解析时出现MalformedByteSequenceException异常

时间:2012-11-17 12:19:49

标签: java domparser

我有这段代码:

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?或者,我可以用其他方式解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

您正在尝试使用XML解析器阅读HTML。你的角色集只是问题的开始。

您需要一个适当的HTML解析器。如果你想要一个类似DOM的结构,我推荐http://jsoup.org/。如果您只想要文本,可以使用Apache Tika。

如果你坚持将它提供给XML解析器,你可以将字节读入缓冲区,然后使用Tika中的字符编码检测器来发现编码,然后转换为String,并将String提供给DOM解析器。