首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

servlet上载文件,文件名保存乱码有关问题

2012-10-13 
servlet下载文件,文件名保存乱码问题环境中统一使用UTF-8编码。在代码前面使用request.setCharacterEncodin

servlet下载文件,文件名保存乱码问题
        环境中统一使用UTF-8编码。在代码前面使用request.setCharacterEncoding("UTF-8");文件名正常显示中文,但是在弹出的保存对话框中文件名显示中文。网上找了很多方法,最终发现以下方法能够解决这个问题。
    response.addHeader("Content-Disposition", "attachment; filename=" + encodingFileName(fileName));
response.addHeader("content-length", Long.toString(filesize));  
public static String encodingFileName(String fileName) {
        String returnFileName = "";
        try {
            returnFileName = URLEncoder.encode(fileName, "UTF-8");
            returnFileName = StringUtils.replace(returnFileName, "+", "%20");
            if (returnFileName.length() > 150) {
                returnFileName = new String(fileName.getBytes("GB2312"), "ISO8859-1");
                returnFileName = StringUtils.replace(returnFileName, " ", "%20");
            }
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
          
        }
        return returnFileName;
    }
      注意这里最重要的是要对fileName的进行两次编码。而且要对空格进行处理。

热点排行