当前位置: 代码迷 >> Web前端 >> servlet上载文件,文件名保存乱码有关问题
  详细解决方案

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

热度:75   发布时间:2012-10-13 11:38:17.0
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的进行两次编码。而且要对空格进行处理。
  相关解决方案