天天看點

Java導出csv檔案亂碼的解決方法

1.需求:

導出csv檔案到指定路徑,編碼格式為UTF-8.

2.解決方法

2.1:指定UTF-8

  1. OutputStreamWriter osw = new OutputStreamWriter(resp.getOutputStream(), "UTF-8");   
  2. osw.write(result);  
  3. osw.flush();  

用NOTEPAD++打開時,顯示正常。然後,在NOTEPADD++中查了一下檔案編碼,發現是以UTF-8無BOM格式編碼,用EXCEL打開為亂碼.

2.2:增加BOM

  1. OutputStreamWriter osw = new OutputStreamWriter(resp.getOutputStream(), "UTF-8");  
  2. osw.write(new String(new byte[] { (byte) 0xEF, (byte) 0xBB,(byte) 0xBF }));  
  3. osw.write(result);  
  4. osw.flush();  

以上為網上的解決方案, NOTEPADD++檢視導出檔案仍然是 以UTF-8無BOM格式編碼,用EXCEL打開為亂碼。此方案并沒什麼卵用。

2.3:把BOM資訊指定為UTF-8

  1. OutputStreamWriter osw = new OutputStreamWriter(resp.getOutputStream(), "UTF-8");  
  2. osw.write(new String(new byte[] { (byte) 0xEF, (byte) 0xBB,(byte) 0xBF },"UTF-8"));  
  3. osw.write(result);  
  4. osw.flush();  

測試結果: NOTEPADD++檢視 導出檔案是 以UTF-8格式編碼。用EXCEL打開正常顯示。搞定!!!