Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Stax解析器无法读取编码为UTF-16的文件_Java_Stax - Fatal编程技术网

Java Stax解析器无法读取编码为UTF-16的文件

Java Stax解析器无法读取编码为UTF-16的文件,java,stax,Java,Stax,我正在使用stax解析器读取我的应用程序中一个公共api中的xml文件。api将inputstream作为参数,我将执行以下操作 public Object <commonApi>(InputStream is) XMLInputFactory inputFactory = XMLInputFactory.newInstance(); XMLEventReader reader = inputFactory.createXMLEventReader(is); try{

我正在使用stax解析器读取我的应用程序中一个公共api中的xml文件。api将inputstream作为参数,我将执行以下操作

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();
   }
}
公共对象(InputStream为)
XMLInputFactory inputFactory=XMLInputFactory.newInstance();
XMLEventReader=inputFactory.createXMLEventReader(is);
试试{
while(parser.hasNext()){
XMLEvent事件=parser.nextEvent();
//扩孔解析逻辑
}
}捕获(例外e){
e、 printStackTrace();
}
}
问题是,如果xml文件中的编码是UTF-8,那么这种方法是有效的。如果是UTF-16,则无法正确读取。给出以下异常

javax.xml.stream.XMLStreamException:ParseError位于[row,col]:[1,41] 消息:prolog中不允许包含内容


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

UTF-16
作为
编码一起使用

UTF-16
作为
编码一起使用

我的代码必须适用于UTF-8和UTF-16或任何其他有效编码。因此,我需要一种通用的工作方式,我的代码必须适用于UTF-8和UTF-16或任何其他有效编码。所以,我需要一个通用的方法