//文件名稱
String fileName = "test.xml";
// 格式化XML文檔
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("UTF-8"); // 指定XML編碼
//這裏用的是 FileWrite,默認是ANSI
XMLWriter writer = new XMLWriter(new FileWrite(new File(fileName)), format);
writer.write(document);
writer.close();
上面代碼生成的xml文件編碼,內容是utf-8的,但文件格式確是ANSI的,導致格式不統一.
原因分析:
由於FileWriter默認的輸出編碼是ANSI編碼,而Dom4j中的wirte方法提供的內容實際是以UTF-8保存的,因此造成了包括中文字符的XML文件無法正常閱讀。
解決方法:
不能使用簡單的FileWriter,而應該是使用一個能指定具體輸出編碼的Writer,在JDK的io包中, OutputStreamWriter可以指定輸出編碼。
正確的代碼如下:
j
XMLWriter writer = new XMLWriter(new FileOutputStream(new File(fileName)), format);
writer.write(document);
writer.close();