Jun 2, 2007

dom4j 中文问题:java.io.UTFDataFormatException: Invalid byte 1 of 1-byte UTF-8 sequence.

几乎每一个编程的人都会遇到中文的问题,但偏偏你可能不知道问题是由于中文引起的,而往往从代码逻辑中寻找原因。也难怪,谁能想到我们伟大祖国的文字在八国联军以及小日本鬼子的开发工具里面就成了导致错误的罪魁祸首了呢?

在XML的开发中,我就遇到了类似的问题。
在Dom4J的API支持下,

Document document=null .........
XMLWriter output = new XMLWriter(new FileWriter(new File( "c:/test/Interest.xml")));
output.write(document);
然而在用SAX解析的时候却出现了这样的问题:
SAXReader saxReader = new SAXReader();
Document document=null;
document = saxReader.read(inputXml);
报错:java.io.UTFDataFormatException: Invalid byte 1 of 1-byte UTF-8 sequence.
查了半天代码,最后才发现:是UTF字符的问题。当XML中含有中文,而没有指定XML Encoding="UTF-8"的时候,就会产生这样的错误。(咬牙切齿,磨刀霍霍向鬼子)
修改方法:
OutputStream os=new FileOutputStream("c:/test/Interest.xml");
XMLWriter output=new XMLWriter(new OutputStreamWriter(os,"UTF-8"));
output.write(document);
总有一天,我们要用我们的冠绝天下的工具来折磨那些不重视我们中国语言的人。

No comments: