web开发时在浏览器上下载文件中文名字乱码问题

来源:互联网 发布:怎样属于数组下标越界 编辑:程序博客网 时间:2024/06/15 09:03

一直以来,编译器跟浏览器的中文编码问题都让我很头疼,今天我就做了一下总结,今后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.com.cn/s/blog_b216acc90102vkq7.html

阅读全文
0 0
原创粉丝点击