Response.setHeader("Content-Disposition", "attachment; filename=" + fileName+".xls");
如果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字節(jié)左右,。而一個漢字編碼成UTF-8是9個字節(jié),那么17個字便是153個字節(jié),,所以會報錯,。而且不跟后綴也不對. 方法2: response.setHeader( "Content-Disposition", "attachment;filename=" + new String( fileName.getBytes("gb2312"), "ISO8859-1" ) ); 在確保附件文件名都是簡體中文字的情況下,那么這個辦法確實是最有效的,,不用讓客戶逐個的升級IE,。如果臺灣同胞用,把gb2312改成big5就行,。但現(xiàn)在的系統(tǒng)通常都加入了國際化的支持,,普遍使用UTF-8。如果文件名中又有簡體中文字,,又有繁體中文,,還有日文。那么亂碼便產(chǎn)生了,。另外,在上Firefox (v1.0-en)下載也是亂碼,。 |
|