web开发时在浏览器上下载文件中文名字乱码问题
生活随笔
收集整理的這篇文章主要介紹了
web开发时在浏览器上下载文件中文名字乱码问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一直以來,編譯器跟瀏覽器的中文編碼問題都讓我很頭疼,今天我就做了一下總結,今后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
總結
以上是生活随笔為你收集整理的web开发时在浏览器上下载文件中文名字乱码问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 三重视角看陈彤:一个网媒老兵的谢幕
- 下一篇: 智慧公寓管理系统