ZT文萃

          本博不原創,轉帖自己感興趣那些事人物,什么入眼貼什么,隨心所欲。
          posts - 93, comments - 5, trackbacks - 0, articles - 0
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          http://blog.csdn.net/chenyanbo/article/details/6866941


          xml讀取異常Invalid byte 1 of 1-byte UTF-8 sequence


          說簡單點當你解析別人的xml格式出現這個錯誤可能就是別人在生成xml時沒有保存為utf-8的字符編碼格式。

          在中文版的window下java的默認的編碼為GBK,也就是所雖然我們標識了要將xml保存為utf-8格式但實際上文件是以GBK格式來保存的,所以這也就是為什么能夠我們使用GBK、GB2312編碼來生成xml文件能正確的被解析,而以UTF-8格式生成的文件不能被xml解析器所解析的原因。


          xml解析時遇到的編碼異常:

          1. org.dom4j.DocumentException: Invalid byte 1 of 1-byte UTF-8 sequence. Nested exception: Invalid byte 1 of 1-byte UTF-8 sequence.  
          2.     at org.dom4j.io.SAXReader.read(SAXReader.java:484)  
          3.     at org.dom4j.io.SAXReader.read(SAXReader.java:321)  
          4.     at com.dataoperate.PaseXml.pXml(PaseXml.java:28)  
          5.     at com.dataoperate.JdbcOp.insertDb(JdbcOp.java:30)  
          6.     at com.dataoperate.JdbcOp.main(JdbcOp.java:89)  
          7. Nested exception:   
          8. com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: Invalid byte 1 of 1-byte UTF-8 sequence.  
          9.     at com.sun.org.apache.xerces.internal.impl.io.UTF8Reader.invalidByte(UTF8Reader.java:684)  
          10.     at com.sun.org.apache.xerces.internal.impl.io.UTF8Reader.read(UTF8Reader.java:554)  
          11.     at com.sun.org.apache.xerces.internal.impl.XMLEntityScanner.load(XMLEntityScanner.java:1742)  
          12.     at com.sun.org.apache.xerces.internal.impl.XMLEntityScanner.peekChar(XMLEntityScanner.java:487)  
          13.     at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2687)  
          14.     at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648)  
          15.     at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140)  
          16.     at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:511)  
          17.     at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:808)  
          18.     at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)  
          19.     at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119)  
          20.     at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)  
          21.     at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)  
          22.     at org.dom4j.io.SAXReader.read(SAXReader.java:465)  
          23.     at org.dom4j.io.SAXReader.read(SAXReader.java:321)  
          24.     at com.dataoperate.PaseXml.pXml(PaseXml.java:28)  
          25.     at com.dataoperate.JdbcOp.insertDb(JdbcOp.java:30)  
          26.     at com.dataoperate.JdbcOp.main(JdbcOp.java:89)  
          27. Nested exception: com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: Invalid byte 1 of 1-byte UTF-8 sequence.  
          28.     at com.sun.org.apache.xerces.internal.impl.io.UTF8Reader.invalidByte(UTF8Reader.java:684)  
          29.     at com.sun.org.apache.xerces.internal.impl.io.UTF8Reader.read(UTF8Reader.java:554)  
          30.     at com.sun.org.apache.xerces.internal.impl.XMLEntityScanner.load(XMLEntityScanner.java:1742)  
          31.     at com.sun.org.apache.xerces.internal.impl.XMLEntityScanner.peekChar(XMLEntityScanner.java:487)  
          32.     at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2687)  
          33.     at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648)  
          34.     at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140)  
          35.     at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:511)  
          36.     at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:808)  
          37.     at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)  
          38.     at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119)  
          39.     at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)  
          40.     at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)  
          41.     at org.dom4j.io.SAXReader.read(SAXReader.java:465)  
          42.     at org.dom4j.io.SAXReader.read(SAXReader.java:321)  
          43.     at com.dataoperate.PaseXml.pXml(PaseXml.java:28)  
          44.     at com.dataoperate.JdbcOp.insertDb(JdbcOp.java:30)  
          45.     at com.dataoperate.JdbcOp.main(JdbcOp.java:89)  
          解決:

          1、最簡單就是把<?xml version="1.0" encoding="UTF-8"?>改成<?xml version="1.0" encoding="gbk"?>

          2、或者把xml打開另存的時候把字符集改為UTF-8后保存

          3、在代碼解析的時候先把xml重新寫一遍

          [javascript] view plaincopy
          1. SAXReader reader = new SAXReader();    
          2.  org.dom4j.Document document = reader.read("D:\\ha.xml");    
          3.  OutputFormat of = new OutputFormat();    
          4.  of.setEncoding("UTF-8"); //改變編碼方式    
          5.  XMLWriter writer = new XMLWriter(new FileWriter "d:\\dom4j.xml"), of);    

          4、直接dom4j讀取的時候用io來讀,修改字符編碼

          1. FileInputStream in = new FileInputStream(new File(fileName));  
          2. Reader read = new InputStreamReader(in,"gbk");  
          3. Document document = reader.read(read);

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 如东县| 东方市| 故城县| 新竹县| SHOW| 蓬溪县| 寿宁县| 皋兰县| 鞍山市| 唐河县| 虞城县| 华容县| 中江县| 锡林浩特市| 河北省| 喀喇沁旗| 余姚市| 乐平市| 土默特右旗| 阜城县| 高雄市| 高陵县| 兴仁县| 东台市| 康乐县| 科技| 黔西县| 灵璧县| 南投县| 塔河县| 富川| 星子县| 贞丰县| 巴林左旗| 获嘉县| 曲靖市| 哈巴河县| 东源县| 仁寿县| 施甸县| 洱源县|