java導出文件時中文文件名亂碼問題

http://www.it165.net/pro/html/201202/1653.html


在編寫excel文件導出程序的時候遇到一個奇怪的問題,就是在程序中給要導出的文件指定一箇中文名字時,在瀏覽器上出現的下載框中的文件名出現了亂碼,如何解決

httpServletResponse.setContentType("application/vnd.ms-excel");

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) {
        }
    }


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