导出文件的文件名乱码----解决方法 发表于 2017-04-06 | 分类于 月经贴 | | Java中导出文件的文件名乱码解决方法直接上代码~_~ 解决的通用方法: 1234567891011121314151617181920212223242526private static final CONTENT_TYPE="application/vnd.ms-excel";public void export(HttpServletRequest request, HttpServletResponse response){ String fileName = "中文文件名"; final String userAgent = request.getHeader("USER-AGENT"); response.setContentType(CONTENT_TYPE); String encodedFileName = encodeFileName(fileName); // 下载文件 InputStream in = 你的输入流对象; FileCopyUtils.copy(in, response.getOutputStream());}// 对文件名按照不同的浏览器做相应的URL编码public String encodeFileName(String userAgent, String fileName){ try{ if(StringUtils.contains(userAgent, "MSIE")){ // IE浏览器 fileName = URLEncoder.encode(fileName, "UTF-8"); } else if(StringUtils.contains(userAgent, "Mozilla")){ // google、火狐 fileName = URLEncoder.encode(fileName, "ISO8859-1") } else { // 其他的浏览器 fileName = URLEncoder.encode(fileName, "UTF-8"); } return fileName; } catch (UnsupportedEncodingException e){ e.printStackTrace(); return fileName; }} 你也可以把上面的方法encodeFileName(String fileName)换个写法: 123456789public String encodeFileName(String userAgent, String fileName){ try{ fileName = StringUtils.contains(userAgent, "Mozilla") ? URLEncoder.encode(fileName, "ISO8859-1") : URLEncoder.encode(fileName, "UTF-8"); return fileName; } catch (UnsupportedEncodingException e){ e.printStackTrace(); return fileName; }} Reference参考资料:感谢CSDN的大神们!