在寫文件下載的時候遇到的一個問題,也就是下載的文件的文件名是中文的話,瀏覽器下載的時候多是亂碼,解決方案以下:java
// 請求客戶端操做系統的信息 final String userAgent = request.getHeader("USER-AGENT"); if(userAgent.contains("Firefox")){ //是火狐瀏覽器,使用BASE64編碼 fileName = "=?utf-8?b?"+new BASE64Encoder().encode(fileName.getBytes("utf-8"))+"?="; }else{ //給文件名進行URL編碼 //URLEncoder.encode()須要兩個參數,第一個參數時要編碼的字符串,第二個是編碼所採用的字符集 fileName = URLEncoder.encode(fileName, "utf-8"); }
而後再去設置響應頭,應該就沒問題了瀏覽器
response.setContentType(servletContext.getMimeType(fileName)); response.addHeader("Content-Disposition", "attachment; filename=" + fileName);