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);

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


          網站導航:
           
          主站蜘蛛池模板: 仁寿县| 广西| 全州县| 商丘市| 嘉善县| 桑日县| 安徽省| 江口县| 闵行区| 商河县| 玛曲县| 门源| 柏乡县| 项城市| 驻马店市| 旅游| 朝阳区| 绿春县| 武夷山市| 萍乡市| 武安市| 元氏县| 互助| 建昌县| 巧家县| 卢湾区| 赤水市| 平陆县| 扶沟县| 米脂县| 柘城县| 普洱| 东平县| 凤翔县| 印江| 四子王旗| 吴江市| 磐安县| 慈溪市| 桐城市| 洞头县|