首页 > 代码库 > Dom4j读写文件时的编码问题

Dom4j读写文件时的编码问题

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流中修改字符编码