admin管理员组文章数量:1530517
一直以来,编译器跟浏览器的中文编码问题都让我很头疼,今天我就做了一下总结,今后web开发下载文件的时候就不用担心乱码的问题了。
浏览器可以自己识别编码,是因为与Content-Disposition相互对应,如果一致就不会出现乱码问题了。
首先应该是IE浏览器,大多数人开发都会参照IE,因为没有过多的插件,可以最大限度的显示代码的缺点和BUG。
(1) IE浏览器使用的是直接urlencode,编写filename时格式如下:
filename = URLEncoder.encode(filename,"UFT8");
response.setHeader("Content-disposition","attachment; filename="+ filename)
这样就可以正常编码 了。一般也适用于其他的浏览器。
(2)Opera浏览器,采用的是filename*的方式
new_filename* = "UTF-8"+filename
(3) Safar浏览器采用的是ISO编码
filename = new String(filename.getBytes("UFT-8"),"ISO8859-1");
(4) Chrome浏览器,只能采用MimeUtility编码,或者ISO的中文输出
filename = MimeUtility.encodeText(filename,"UFT8","B");
(5) 火狐浏览器FireFox ,可以使用MimeUtility,ISO或者filename*的中文输出
另外判断是什么类型的浏览器可以同userAgent.indexOf("浏览器类型")来判断
String agent = request.getHeader("user-agent");
if(agent.contains("Firefox")){
fileNameDisplay = new String(fileNameDisplay.getBytes("GB2312"),"ISO-8859-1");
} else {
//encode后替换 解决空格问题 . encode后的内容 浏览器是如何解析的?
fileNameDisplay = URLEncoder.encode(fileNameDisplay, "UTF-8").replaceAll("\\+", "%20");
//fileNameDisplay = URLEncoder.encode(fileNameDisplay, "UTF-8");
}
response.addHeader("Content-Disposition", "attachment;filename=" + fileNameDisplay);
原文地址: http://blog.sina/s/blog_b216acc90102vkq7.html
版权声明:本文标题:web开发时在浏览器上下载文件中文名字乱码问题 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/xitong/1726115265a1056025.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论