0

我有这个代码:

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?或者,我还有什么其他方法可以解决这个问题?

4

1 回答 1

1

您正在尝试使用 XML 解析器读取 HTML。你的字符集只是你问题的开始。

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

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

于 2012-11-17T12:42:52.863 回答