我正在用 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) 是一个输入流。
这会导致错误:
com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: Invalid byte 2 of 2-byte UTF-8
这听起来像是由于编码错误而导致的错误。我想在 InputStream 上设置编码,但我不知道如何设置。我找到了在 InputSource 或 InputStreamReader 上设置编码的方法,但 db.parse 不采用 reader/InputSource。
解决这个问题的最佳方法是什么?
谢谢!
最佳答案
DocumentBuilder.parse
可以采用 InputSource
。请参阅javadocs .
因此,您应该尝试将 InputStream
包装在 InputReader
中(您可以在其中指定字符集),然后基于以下内容创建一个 InputSource
那个。
这有点复杂,但这些事情发生在 Java 中。
类似的东西
关于java - 设置输入流的编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10037360/