现象:在电脑上,使用IE,Chrome下载文件,文件名均正常
在部分手机上下载是正常的,但是在部分手机上显示出现乱码
String user_agent = request.getHeader("user-agent"); String fname = ""; // 主要是下面这段代码起作用 boolean flag = user_agent.indexOf("like Gecko")>0; if(user_agent.toLowerCase().indexOf("msie")>0||flag){ fname = URLEncoder.encode(fileName, "UTF-8"); }else{ fname = new String(fileName.getBytes(),"iso8859-1"); } String downType = session.getServletContext().getMimeType(fileName); response.setHeader("Content-type", downType); response.setHeader("Content-Disposition", "attachment;filename="+fname); String fileUrl = session.getServletContext().getRealPath("/")+filePath; MyLog4j.logger.info("文件真实路径:"+fileUrl); File f = new File(fileUrl); FileInputStream input = new FileInputStream(f); OutputStream out = response.getOutputStream(); IOUtils.copy(input, out); IOUtils.closeQuietly(input); input.close();
但是在手机上,出现了一种显现:下载后文件正常,但是在下载界面让用户确定下载时,显示的文件名为%....的形式,没有显示中文名称。如果是"iso8859-1"方式的时候,在确定界面显示的就是中文名称。