response.addHeader中文亂碼
阿新 • • 發佈:2018-12-23
最近專案中在寫資料從庫中匯出到excel檔案中,然後通過二進位制流的方式下載儲存在伺服器中的檔案,然後下載下來的檔案的中文一直顯示不出來,因為之前見過這種問題,這次又遇到了,所以還是記錄一下吧。
response.addHeader("Content-Disposition", "attachment;filename=" + new String(filename.getBytes(),"ISO8859-1"));
response.addHeader("Content-Length", "" + file.length());
以上是可以是用的程式碼,相比於錯誤的程式碼,就添加了一個引數,來限定編碼格式 : "ISO8859-1" ,這裡的newSrting是有兩個建構函式的。
response.setHeader( "Content-Disposition", "attachment;filename=" + new String( fileName.getBytes("gb2312"), "ISO8859-1" ) );
在確保附件檔名都是簡 體中文字的情況下,那麼這個辦法確實是最有效的。但現在的系統通常都加入了 國際化的支援,普遍使用UTF-8。
寫法如下:
response.setHeader("Content-Disposition", "attachment; filename=" + java.net.URLEncoder.encode(fileName, "UTF-8"));
上面紅色框中是之前顯示不出中文的檔名稱,前面的則是正確的顯示方式。