最近在作导出数据的功能. 碰到浏览器兼容问题。chrome
一样的接口在谷歌、IE 没有问题 ,Safari 文件名就会乱码. 深究考虑 多是 他们内边的人喜欢使用ISO8859-1 (苹果就是这么 NB,无论中国多大市场 也不用UTF-8编码)浏览器
因此只能根据浏览器的代理作个判断, 就这么简单点事. 百度了很久. 在这里记录下,一样犯错误的同仁参考下。app
//解决 苹果浏览器乱码问题 - val ua = request.getHeader("User-Agent").toLowerCase logger.info("ua:%s", ua) val filename = if (ua.indexOf("macintosh") > -1 && ua.indexOf("chrome") < 0) { logger.info("浏览器: safari") new String(file.getName().getBytes, "iso8859-1") } else { URLEncoder.encode(file.getName(), "utf-8") } //重置输出流 response.reset(); response.addHeader("Content-Disposition", "attachment;filename=" + filename) //设置文件名 response.addHeader("Content-Length", file.length.toString) //设置下载文件大小 response.setContentType("application/vnd.ms-excel;charset=utf-8") //设置文件类型 //读取文件数据 val fis = new FileInputStream(fileName) val outPutStream = response.getOutputStream if (fis.available != 0) { response.setStatus(200) } IOUtils.copy(fis, outPutStream) fis.close response.end