java - 设置输入流的编码

标签 java

我正在用 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/

相关文章:

java - java中泛型子类的行为

java - 解析一个大的 xml 文件 Java

java - 我应该在标签枚举中使用大写字母还是驼峰字母?

java - 为什么我不能调用这个简单的 Web 服务?

java - 基本 CRUD UI Spring

java - java无法读取json文件

java - 如何知道两个坐标之间的距离?

java - Hbase和PIG不会存储所有行

java - Logback 将我的日志消息丢失到文件

java - JR异常 : Invalid byte 1 of 1-byte UTF-8 sequence