1

我正在用 Java 处理 xml,我有以下代码:

  dbf.setValidating(false);
  dbf.setIgnoringComments(false);
  dbf.setIgnoringElementContentWhitespace(true);
  dbf.setNamespaceAware(true);

  DocumentBuilder db = null;
  db = dbf.newDocumentBuilder();
  db.setEntityResolver(new NullResolver());
  _logger.error("Before processing the input stream");
  processXml(db.parse(is));

其中 (is) 是一个 InputStream。

这导致错误:

com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException:2 字节 UTF-8 的第 2 字节无效

这听起来像是由于编码错误而导致的错误。我想在 InputStream 上设置编码,但我不确定如何。我找到了在 InputSource 或 InputStreamReader 上设置编码的方法,但是 db.parse 不采用 reader/InputSource。

解决此问题的最佳方法是什么?

谢谢!

4

1 回答 1

2

DocumentBuilder.parse可以拿一个InputSource。请参阅javadocs

因此,您应该尝试将您的包装InputStream在一个InputReader(您可以在其中指定字符集)中,然后InputSource基于它创建一个。

这有点令人费解,但这些事情发生在 Java 中。

类似的东西

于 2012-04-05T23:47:14.510 回答