將查詢的資料以xls檔案匯出時(UTF-8編碼),資料正常;但以CSV檔案匯出時,檔案中的中文亂碼,同樣是UTF-8編碼,改成GBK編碼導出時,中文顯示正常。 (建議:java影片教學)
解決方法:
#以CSV方式匯出的檔案中預設不含BOM訊息,透過給予將要輸出的內容設定BOM標識(以EF BB BF 開頭的位元組流)即可解決此問題。 具體方法如下:
... OutputStreamWriter outputStreamWriter = new OutputStreamWriter(response.getOutputStream(), "UTF-8"); // 要输出的内容 result = (String)contentMap.get(RESPONSE_RESULT); response.setHeader("Content-Disposition", "attachment;filename=test.csv"); outputStreamWriter.write(new String(new byte[]{(byte) 0xEF, (byte) 0xBB, (byte) 0xBF})); outputStreamWriter.write(result); outputStreamWriter.flush();
如果是以OutputStream流實現的,參數可以如下修改:
out = response.getOutputStream(); //加上UTF-8文件的标识字符 out.write(new byte []{(byte) 0xEF, (byte) 0xBB, (byte) 0xBF});
更多java知識請關注java基礎教程欄目。
以上是java怎麼解決導出csv檔亂碼的詳細內容。更多資訊請關注PHP中文網其他相關文章!