今天做了一个XML文件的解析时,打开XML文件发现文件没有编码格式说明,就是不知道文件内容的编码格式,如下:     DocumentBuilderFactory   factory   =   DocumentBuilderFactory.newInstance();      DocumentBuilder   builder   =   factory.newDocumentBuilder();     Document   doc   =   builder.parse(fileName); //在这一步报错:Invalid byte 1 of 1-byte UTF-8 sequence 
     
     然后我将此文件另存为UTF-8格式又导入一次,就没有任何问题了。     请教下,除了将文件另存为UTF-8格式以外,有没有其他更好的方法可以在解析此XML文件时不报这种错误     请说明一下具体的解决办法,谢谢.
    

解决方案 »

  1.   

    UTF-8 的xml有两种格式 ,使用notepad++ 编辑xml转换为 无bom格式的 UTF-8的xml就可以了
    一般java工作流中都要求 是无bom的 因为前面多了一个byte 没办法解析
      

  2.   

    感谢楼上的回复,但现在的问题是,此文件中数据的保存格式我无法确定,而且此文件是生成于服务器的一个文件夹下,所以基本不太可能把此XML文件DOWN到本地,然后用NOTEPAD去重新保存为UTF-8格式的,那么在这些前提下,有没有好的方式能够将此文件解析,并不报错,谢谢
      

  3.   

    把 XML 头中的编码改为 GBK 就可以了。如果是 UTF-8 的话,必须存为 UTF-8 格式。
      

  4.   

    仅供参考
       根据Invalid byte 1 of 1-byte UTF-8 sequence  判断xml格式为UTF-8 bom格式的
       建议在本机上用utf-8无 bom和有bom格式的XML文件做测试 
       dom4j 或是其他的解析方法。时间长了我有点忘了
      

  5.   

    谢谢楼上的几位,自己结贴。DocumentBuilderFactory  factory  =  DocumentBuilderFactory.newInstance(); 
    DocumentBulider documentBuilder = factory.newDocumentBuilder(); 
    Document doc = documentBuilder.parse(new InputSource(new InputSteamReader(new FileInputStream(fileName),"UTF-8")));这样就可以将文件中按照UTF-8的字符流格式转化成Document对象。