Excel中文亂碼

Content-Disposition中文亂碼

Response.setHeader(”Content-Disposition”, “p_w_upload; filename=” + fileName+”.xls”);
如果file.Name爲中文則亂碼。解決辦法是
方法1
response.setHeader(”Content-Disposition”, “p_w_upload; filename=” + java.net.URLEncoder.encode(fileName, “UTF-8″));
下載的程序裏有了上面一句,一般在IE6的下載提示框上將正確顯示文件的名字,無論是簡體中文,還是日文。但是文字只要超過17個字,就不能下載了。
. 通過原來的方式,也就是先用URLEncoder編碼,當中文文字超過17個時,IE6 無法下載文件。這是IEbug,參見微軟的知識庫文章 KB816868 。原因可能是IE在處理 Response Header 的時候,對header的長度限制在150字節左右。而一個漢字編碼成UTF-89個字節,那麼17個字便是153個字節,所以會報錯。而且不跟後綴也不對.

方法2
response.setHeader( “Content-Disposition”, “p_w_upload;filename=” + new String( fileName.getBytes(”gb2312″), “ISO8859-1″ ) );
在確保附件文件名都是簡體中文字的情況下,那麼這個辦法確實是最有效的,不用讓客戶逐個的升級IE。如果臺灣同胞用,把gb2312改成big5就行。但現在的系統通常都加入了國際化的支持,普遍使用UTF-8。如果文件名中又有簡體中文字,又有繁體中文,還有日文。那麼亂碼便產生了。另外,在上Firefox (v1.0-en)下載也是亂碼。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章