您的位置:首页 > 其它

Safari浏览器导出数据(excel)文件名乱码, 无后缀问题

2016-11-08 00:00 253 查看
摘要: 谷歌浏览器、Safari浏览器导出excel数据 文件乱码

最近在做导出数据的功能. 碰到浏览器兼容问题。

同样的接口在谷歌、IE 没有问题 ,Safari 文件名就会乱码. 深究考虑 可能是 他们内边的人喜欢使用ISO8859-1 (苹果就是这么 NB,不管中国多大市场 也不用UTF-8编码)

所以只能根据浏览器的代理做个判断, 就这么简单点事. 百度了好久. 在这里记录下,同样犯错误的同仁参考下。

//解决 苹果浏览器乱码问题 -
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  excel 数据导出 乱码