FIREFOX 下载中文文件名出现乱码的java解决方案

来源:互联网 发布:极乐净土动作数据镜头 编辑:程序博客网 时间:2024/06/05 12:48
private void setHeader(HttpServletResponse response,
            HttpServletRequest request, String filename)
            throws UnsupportedEncodingException {
        response.reset();
        // 设置为下载application/x-download
        response.setContentType("application/x-download charset=UTF-8");
        // 通常解决汉字乱码方法用URLEncoder.encode(...)
        String filenamedisplay = URLEncoder.encode(filename, "UTF-8") + ".pdf";
        if ("FF".equals(getBrowser(request))) {
            // 针对火狐浏览器处理方式不一样了
            filenamedisplay = new String(filename.getBytes("UTF-8"),
                    "iso-8859-1") + ".pdf";
        }
        response.setHeader("Content-Disposition", "attachment;filename="
                + filenamedisplay);
    }

    // 以下为服务器端判断客户端浏览器类型的方法
    private String getBrowser(HttpServletRequest request) {
        String UserAgent = request.getHeader("USER-AGENT").toLowerCase();
        if (UserAgent != null) {
            if (UserAgent.indexOf("msie") >= 0)
                return "IE";
            if (UserAgent.indexOf("firefox") >= 0)
                return "FF";
            if (UserAgent.indexOf("safari") >= 0)
                return "SF";
        }
        return null;
    }

0 0
原创粉丝点击