1. 程式人生 > >使用dom4j 生成xml UTF-8 編碼錯誤之解決

使用dom4j 生成xml UTF-8 編碼錯誤之解決

//檔名稱
		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();