作業記録:j 2 ee開発ではダウンロードエクスポートの文字化けの問題がよく発生します.

1472 ワード

EXcelファイルエクスポートプログラムを作成するときに奇妙な問題が発生しました.プログラムでエクスポートするファイルに中国語の名前を指定すると、ブラウザに表示されるダウンロードボックスのファイル名に文字化けしてしまいます.どうすれば解決しますか?
httpServletResponse.setContentType("application/vnd.ms-excel");//  excel   
//response.setContentType("application/msword;charset=ISO8859-1");//  word 
 
Util.setFileDownloadHeader(httpServletRequest,httpServletResponse,"    .xls");

setFileDownloadHeader関数は主に現在のユーザーのブラウザによって、ファイルの名前に対して異なる符号化設定を行い、それによって異なるブラウザの下でファイル名の中国語文字化の問題を解決する.
public static void setFileDownloadHeader(HttpServletRequest request, HttpServletResponse response, String fileName) {
         final String userAgent = request.getHeader("USER-AGENT");
         try {
             String finalFileName = null;
             if(StringUtils.contains(userAgent, "MSIE")){//IE   
                 finalFileName = URLEncoder.encode(fileName,"UTF8");
             }else if(StringUtils.contains(userAgent, "Mozilla")){//google,     
                 finalFileName = new String(fileName.getBytes(), "ISO8859-1");
             }else{
                 finalFileName = URLEncoder.encode(fileName,"UTF8");//     
             }
             response.setHeader("Content-Disposition", "attachment; filename=\"" + finalFileName + "\"");//                 ,            
         } catch (UnsupportedEncodingException e) {
         }
     }