1、Dom4j写文件时的编码问题
如上图代码所示,如果使用 writer = new XMLWriter(new FileWriter(new File(filepath)), xmlFormat); 下载的xml文件编码格式如下:
原因分析:
由于FileWriter默认的输出编码是ANSI编码,而Dom4j中的wirte方法提供的内容实际是以UTF-8保存的,因此会造成包括中文字符的XML文件无法正常阅读。
解决方法:
不能使用简单的FileWriter,而应该是使用一个能指定具体输出编码的Writer,在JDK的io包中, OutputStreamWriter可以指定输出编码。
正确的代码如下:
OutputStream out=FileOutputStream(fileName);
Writer wr = OutputStreamWriter(out, "UTF-8");
writer = new XMLWriter(wr);
writer.write(document);
writer.flush();
writer.close();
2、Dom4j读文件时编码问题(常见问题:Invalid byte 1 of 1-byte UTF-8 sequence)
原因分析:
中文环境下,我们将xml保存为utf-8格式但实际上文件是以GBK格式来保存的。
解决方法:
1、手动将文件另存为。。。 时,修改文件编码为UTF-8.
2、Dom4J读取文件时,用IO读,在IO流中修改字符编码