1. 程式人生 > >用java程式碼寫xml檔案時,出現中文亂碼的解決方法

用java程式碼寫xml檔案時,出現中文亂碼的解決方法

phoneElement.addAttribute("name", "家庭電話");
emailElement.setText("[email protected]");
try {
/**
* 特別注意:

* java中有Writer類繼承下來的子類沒有提供編碼格式處理,所以dom4j也無法歲輸出的檔案進行正確的格式處理。
* 這時候所儲存的檔案會以系統的預設編碼對檔案進行儲存,在中文版的window下的java預設編碼問GBK,
* 也就是說雖然我們標識了要將XML儲存utf-8格式,但實際上檔案是以gbk格式來儲存的,所以也就是為什麼能夠使用GBK、
* GB2312編碼來生成XMl檔案能夠正確被解析,而已utf-8格式生成的檔案不能被XMl解析器所解析的原因。所以不應該用FileWriter物件來構建xml文件,
*而應該使用FileOutPutStream物件來構建xml文件。

*/
//FileWriter fw = new FileWriter("d:\\user.xml");   //用FileWriter來構建xml文件,雖然說可以構建xml文件,但是乳溝有中文時,會出現亂碼,看上面的特別注意;
FileOutputStream fps = new FileOutputStream(new File("d:\\user.xml"));  //用FileOutPutStream物件來構建xml文件
OutputFormat opf = OutputFormat.createPrettyPrint();    //格式化生成的的XML檔案
//opf.setEncoding("UTF-8");   //就算是設定了XML檔案的編碼形式,但是預設的是將檔案的儲存形式是gbk
//XMLWriter  xw = new XMLWriter(fw,opf);     //建立XMLWritere物件,將構建的xml文件物件和格式化xml檔案的引數傳入
XMLWriter xw = new XMLWriter(fps, opf);  //建立XMLWriter,將構建xml文件物件fps和格式化xml文件物件opf傳入到XMlWriter的建構函式的引數中
xw.write(doc);  //用XMlWriter物件的write()方法將doc物件寫入到xml檔案中
xw.close();   //關閉XMlWriter物件
} catch (Exception e) {
e.printStackTrace();
}