最近在作導出數據的功能. 碰到瀏覽器兼容問題。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