【问题标题】:Stax parser fails to read files with encoding UTF-16Stax 解析器无法读取编码为 UTF-16 的文件
【发布时间】:2013-04-28 18:10:19
【问题描述】:

我正在使用 stax 解析器在我的应用程序的一个公共 api 中读取一个 xml 文件。该api将输入流作为参数,我正在做类似下面的事情

public Object <commonApi>(InputStream is)
  XMLInputFactory inputFactory = XMLInputFactory.newInstance();
  XMLEventReader reader = inputFactory.createXMLEventReader(is);
  try{     
      while (parser.hasNext()) {
      XMLEvent event = parser.nextEvent();
      // reaming parsing logic
     }
   } Catch (Exception e){
      e.printStackTrace();
   }
}

如果 xml 文件中的编码是 UTF-8,则问题是这样的。如果是 UTF-16,那么它不能正确读取..给出以下异常

javax.xml.stream.XMLStreamException: ParseError at [row,col]:[1,41] 消息:prolog 中不允许有内容。

我无法更改通用 api 的签名。我需要对输入流进行操作.. 有什么建议吗?

【问题讨论】:

    标签: java stax


    【解决方案1】:

    【讨论】:

    • 我的代码必须适用于 UTF-8 和 UTF-16 或任何其他有效编码。所以,我需要一种通用的方法
    猜你喜欢
    • 1970-01-01
    • 2021-03-15
    • 2013-08-04
    • 1970-01-01
    • 1970-01-01
    • 2021-03-09
    • 2010-12-27
    • 2012-06-12
    • 2014-09-07
    相关资源
    最近更新 更多