xstream:Invalid byte 2 of 2-byte UTF-8 sequence
2012-03-12 20:49
295 查看
xstream:Invalid byte 2 of 2-byte UTF-8 sequence
博客分类:Exception
JavaXML
blog迁移至 :http://www.micmiu.com
在用XStream将xml
反序列化 为Javabean时报错,信息如下:
com.thoughtworks.xstream.io.StreamException: : Invalid byte 2 of 2-byte UTF-8 sequence. at com.thoughtworks.xstream.io.xml.DomDriver.createReader(DomDriver.java:88) at com.thoughtworks.xstream.io.xml.DomDriver.createReader(DomDriver.java:70) at com.thoughtworks.xstream.XStream.fromXML(XStream.java:891) at michael.xstream.XtreamTestMain.main(XtreamTestMain.java:71) Caused by: com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: Invalid byte 2 of 2-byte UTF-8 sequence. at com.sun.org.apache.xerces.internal.impl.io.UTF8Reader.invalidByte(UTF8Reader.java:684) at com.sun.org.apache.xerces.internal.impl.io.UTF8Reader.read(UTF8Reader.java:369) at com.sun.org.apache.xerces.internal.impl.XMLEntityScanner.load(XMLEntityScanner.java:1742) at com.sun.org.apache.xerces.internal.impl.XMLEntityScanner.peekChar(XMLEntityScanner.java:487) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2687) at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:511) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:808) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737) at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119) at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:235) at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:284) at com.thoughtworks.xstream.io.xml.DomDriver.createReader(DomDriver.java:79) ... 3 more
产生的原因:
简单的说就是XML文件的编码和解析XML时用的编码不一致产生的问题。
由于文件会以系统的默认编码对文件进行保存,在中文版的window下Java的默认的编码为GBK,所以默认生成的xml文件是以GBK格式来保存的,所以我们使用GBK、GB2312编码来生成xml文件能正确的被解析,而以UTF-8格式生成的文件不能被xml解析器所解析的原因,其实和之前文章碰到的问题类似:http://sjsky.iteye.com/blog/1053931
解决办法 :
就是为DOM解析器指定好编码utf-8,代码如下
1.XStream xStream = new XStream(new DomDriver("utf-8"));
有关XStream序列化JAVA对象为XML以及反序列化的使用说明可参见 : http://sjsky.iteye.com/blog/784434
相关文章推荐
- xml中1字节的UTF-8序列的字节1无效([字符编码]Invalid byte 1 of 1-byte UTF-8 sequence)
- Invalid byte 2 of 2-byte UTF-8 sequence
- 编码问题之:java.io.UTFDataFormatException: Invalid byte 2 of 2-byte UTF-8 sequence.
- Hadoop Invalid byte 1 of 1-byte UTF-8 sequence
- web services axis1客户端Invalid byte 2 of 2-byte UTF-8 sequence
- xml读取异常Invalid byte 1 of 1-byte UTF-8 sequence
- xml读取异常Invalid byte 1 of 1-byte UTF-8 sequence
- Invalid byte 1 of 1-byte UTF-8 sequence
- php解析xml提示Invalid byte 1 of 1-byte UTF-8 sequence错误的处理方法
- Caused by: java.io.UTFDataFormatException: Invalid byte 3 of 3-byte UTF-8 sequence
- [字符编码]Invalid byte 1 of 1-byte UTF-8 sequence终极解决方案
- “invalid byte 1 of 1-byte UTF-8 sequence”异常
- xml:Invalid byte 2 of 2-byte UTF-8 sequence
- xml中1字节的UTF-8序列的字节1无效([字符编码]Invalid byte 1 of 1-byte UTF-8 sequence终极解决方案)
- 编码问题之:java.io.UTFDataFormatException: Invalid byte 2 of 2-byte UTF-8 sequence.
- Invalid byte 3 of 3-byte UTF-8 sequence
- xml读取异常Invalid byte 1 of 1-byte UTF-8 sequence
- php解析xml提示Invalid byte 1 of 1-byte UTF-8 sequence错误的处理方法
- Android 编译 发生 MalformedByteSequenceException: Invalid byte 3 of 3-byte UTF-8 sequence
- [字符编码]Invalid byte 1 of 1-byte UTF-8 sequence终极解决方案