這裡引用下原作者的文章:
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...