Java解決Excel開啟CSV匯出中文亂碼問題

2021-08-22 11:26:00 字數 1200 閱讀 7517

這裡引用下原作者的文章:

outputstreamwriter osw = new outputstreamwriter(resp.getoutputstream(), "utf-8");

result = (string)contentmap.get(response_result);

resp.setheader("content-disposition", "attachment;filename=test.csv");

osw.write(result); osw.flush();

在servlet中,通過以上**將內容輸出至csv檔案中後,用excel開啟檔案時,總是產生亂碼,但是用notepad++開啟時,顯示正常。然後,在notepadd++的「格式」工具欄中查了一下檔案編碼,發現是「以utf-8無bom格式編碼」,然後試著將其改為「以utf-8格式編碼」後,再用excel開啟時,ok,一切顯示正常。那麼,這麼說明excel是支援utf-8格式的csv檔案的。同時,也說明,通過以上方式匯出的檔案中是不含bom資訊的(關於bom資訊請自行谷歌一下)。那麼,接下來,為了要讓excel正確的顯示,要做的事就很明顯了—-手動的給將要輸出的內容加上bom標識。具體方法如下:

outputstreamwriter osw = new outputstreamwriter(resp.getoutputstream(), "utf-8");  

// 要輸出的內容

result = (string)contentmap.get(response_result);

resp.setheader("content-disposition", "attachment;filename=test.csv");

osw.write(new string(new byte ));

osw.write(result);

osw.flush();

重點就是上面的紅色**了(即倒數第三行**),至於為什麼要新增這個,只要你自己谷歌過bom的話,自然就明白了。

另外,如果你使用的是response的out進行輸出的話,可以這麼搞:

out = response.getoutputstream();     

//加上utf-8檔案的標識字元

out.write(new byte );

寫csv解決Excel開啟亂碼問題

寫csv解決以文字和excel開啟亂碼問題 public static file createcsvfile list exportdata,linkedhashmap map,string outputpath,string filename 定義檔名格式並建立 csvfile new file ...

Excel開啟CSV時出現亂碼怎麼解決

通常csv檔案可以用excel正常開啟,但使用excel開啟後,原本應該出現中文地方都變成亂碼了。這種情況怎麼解決呢?如下圖 在簡體中文環境下,excel開啟的csv檔案預設是ansi編碼,如果csv檔案的編碼方式為utf 8 unicode等編碼可能就會出現檔案亂碼的情況。點選選單 檔案 另存為,...

Excel 開啟後灰色空白的解決辦法

突然有一天,當我開啟乙個excel檔案時,整個excel沒有任何內容,顯示為一片 灰色的空白,如果想開啟指定的資料夾的話,還得通過檔案選項卡中通過瀏覽改檔案才能開啟,非常麻煩,問題如下 開始 執行 regedit 修改hkey classes root excel.sheet.12 shell op...