下载文件中文名出现乱码 java
//--------------------//1 根据不同浏览器区分解决乱码//--------------------String filename= "..."; //文件名String path = "../../.."; //路径//获取浏览器类型 :Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.2.16) Gecko/20110319 Firefox/3.6.16 (.NET CLR 3.5.30729)String agent = request.getHeader("USER-AGENT"); String downLoadName = null;if (null != agent && -1 != agent.indexOf("MSIE")) //IE{ downLoadName = java.net.URLEncoder.encode(filename, "UTF-8"); } else if (null != agent && -1 != agent.indexOf("Mozilla")) //Firefox{ downLoadName = new String(filename.getBytes("UTF-8"),"iso-8859-1"); } else { downLoadName = java.net.URLEncoder.encode(filename, "UTF-8"); } response.setHeader("Content-disposition", "attachment;filename="+ downLoadName );response.setContentType("application/vnd.ms-excel;charset=UTF-8");//以下就是文件输出代码了try { FileInputStream fileInputStream = new FileInputStream(path+ filename); OutputStream out = response.getOutputStream(); int i = 0; while ((i = fileInputStream.read()) != -1) { out.write(i); } fileInputStream.close();} catch (Exception e) { e.printStackTrace();}//--------------------//2 最近看了一下,发现解决乱码不用关心浏览器,可以简单搞定//-------------------- String filename= "..."; //文件名 String path = "../../.."; //路径 response.setContentType("octets/stream"); response.addHeader("Content-Type", "text/html; charset=utf-8"); String downLoadName = new String(filename.getBytes("gbk"), "iso8859-1"); response.addHeader("Content-Disposition", "attachment;filename="+ downLoadName);//以下加入输出代码就好了