1. 程式人生 > >java解決下載時檔名亂碼問題

java解決下載時檔名亂碼問題

直接上部分程式碼:

                String zipFileName = fileNameRoot + System.currentTimeMillis() + ".zip";// 檔名+時間戳+ .zip
                //得請求頭中的User-Agent
                String agent = httpServletRequest.getHeader("User-Agent");
                // 根據不同的客戶端進行不同的編碼
                String filenameEncoder = "";
                if (agent.contains("MSIE")) {
                    // IE瀏覽器
                    filenameEncoder = URLEncoder.encode(zipFileName, "utf-8");
                    filenameEncoder = filenameEncoder.replace("+", " ");
                } else if (agent.contains("Firefox")) {
                    // 火狐瀏覽器
                    BASE64Encoder base64Encoder = new BASE64Encoder();
                    filenameEncoder = "=?utf-8?B?" + base64Encoder.encode(zipFileName.getBytes("utf-8")) + "?=";
                } else {
                    // 其它瀏覽器
                    filenameEncoder = URLEncoder.encode(zipFileName, "utf-8");
                }

                httpServletResponse.setContentType("application/zip");
                // 告訴客戶端該檔案不是直接解析,而是以附件形式開啟(下載)
                httpServletResponse.setHeader("Content-Disposition", "attachment;filename=" + filenameEncoder);