若是file.Name爲中文則亂碼。解決辦法是
方法1:
response.setHeader("Content-Disposition", "attachment; filename=" + java.net.URLEncoder.encode(fileName, "UTF-8"));
下載的程序裏有了上面一句,通常在IE6的下載提示框上將正確顯示文件的名字,不管是簡體中文,仍是日文。可是文字只要超過17個字,就不能下載了。
一. 經過原來的方式,也就是先用URLEncoder編碼,當中文文字超過17個時,IE6 沒法下載文件。這是IE的bug,參見微軟的知識庫文章 KB816868 。緣由多是IE在處理 Response Header 的時候,對header的長度限制在150字節左右。而一個漢字編碼成UTF-8是9個字節,那麼17個字即是153個字節,因此會報錯。並且不跟後綴也不對.
方法2:
response.setHeader( "Content-Disposition", "attachment;filename=" + new String( fileName.getBytes("gb2312"), "ISO8859-1" ) );
在確保附件文件名都是簡 體中文字的狀況下,那麼這個辦法確實是最有效的,不用讓客戶逐個的升級IE。若是臺灣同胞用,把gb2312改爲big5就行。但如今的系統一般都加入了 國際化的支持,廣泛使用UTF-8。若是文件名中又有簡體中文字,又有繁體中文,還有日文。那麼亂碼便產生了。另外,在上Firefox (v1.0-en)下載也是亂碼。java