解决下载文件时中文乱码问题
来源:互联网 发布:mac 六国 重新启动 编辑:程序博客网 时间:2024/06/10 02:37
1.通过User-Agent请求头判断当前浏览器类型
下面是各大浏览器的User-Agent详细信息,根据其中的特殊字符串进行判断浏览器类型
- User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36* Chrome:User-Agen中含有"Chrome"字符串
*解决方式:filename = new String(filename.getBytes("UTF-8"), "ISO8859-1");//完美解决
- User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko
* IE浏览器:User-Agent中含有"Trident"字符串
*解决方式:
filename = URLEncoder.encode(filename, "UTF-8");//有空格会被解码为 “+” 问题
filename = filename.replace("+", "%20"); //解决空格会被解码为 “+”问题- User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:56.0) Gecko/20100101 Firefox/56.0
* Firefox:User-Agent中含有"Firefox"字符串
* 解决方式:filename = "=?utf-8?b?"+new BASE64Encoder().encode(filename.getBytes("utf-8"))+"?=";
- User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36 Edge/15.15063
* Edge:User-Agent中含有"Edge"字符串
*解决方式:
filename = URLEncoder.encode(filename, "UTF-8");//有空格会被解码为 “+” 问题
filename = filename.replace("+", "%20"); //解决空格会被解码为 “+”问题* 通用的解决方式,但是还是会存在部分中文乱码问题:
filename = new String(filename.getBytes("gbk"),"ISO8859-1");
getBytes(String charsetName): 使用指定的字符集将字符串编码为 byte 序列,并将结果存储到一个新的 byte 数组中。
new String(byte[], decode):使用指定的编码decode来将byte[]解析成字符串.
2.模板代码:
String userAgent = request.getHeader("User-Agent");if ("Edge".contains(userAgent)) {System.out.println("Edge");filename = URLEncoder.encode(filename, "UTF-8");filename = filename.replace("+", "%20");}else if ("Chrome".contains(userAgent)) {System.out.println("Chrome");filename = new String(filename.getBytes("UTF-8"), "ISO8859-1");}else if ("Firefox".contains(userAgent)) {System.out.println("Firefox");filename = "=?utf-8?b?"+new BASE64Encoder().encode(filename.getBytes("utf-8"))+"?=";}else if ("Trident".contains(userAgent)) {System.out.println("IE");filename = URLEncoder.encode(filename, "UTF-8");filename = filename.replace("+", "%20");}else {System.out.println("Others"); filename = new String(filename.getBytes("gbk"),"ISO8859-1");}
阅读全文
0 0
- 解决下载文件时中文乱码问题
- struts2解决下载中文文件乱码问题
- 文件下载(解决中文文件名下载乱码问题) 收集
- 文件下载解决中文乱码
- 文件下载中文乱码解决
- java实现中文文件下载,解决乱码问题,亲测无问题~~
- JSP实现文件下载同时解决中文乱码问题
- c# web 下载文件(解决中文文件名乱码问题)
- 打包下载文件 中文文件名乱码问题的解决
- 下载文件默认文件名中文乱码问题的解决
- a 标签下载文件并解决中文乱码问题
- Struts2-文件上传下载-解决下载中文乱码问题
- 多文件压缩下载 及 解决中文乱码问题
- java文件下载的中文文件名乱码问题的解决
- 解决从数据库下载文件时,中文文件名为乱码的问题!
- 文件下载中文乱码问题
- 下载中文文件乱码问题
- 下载文件时兼容不同浏览器中文乱码解决
- 网络引用地址
- Qt Serial Port编译Ubuntu1604+qt4.8.7+qt create2.5.2
- 深入理解java注解(Annotation)以及 自定义注解入门
- MongoDB使用小结:一些常用操作分享
- java SE教程06
- 解决下载文件时中文乱码问题
- Qt无法用UTF-8编辑问题
- Hibernate--根据实体类获得表名、主键名、字段名(与Spring集成)(一)
- 【BeagleBone Black Rev. C试用体验】+设备树驱动
- 人脸识别:(抓拍+识别)
- String Split 获取空值--limit参数作用
- 对于相同喜好的用户,电商高手用Spark MLlib代码如何操作?
- [列联相关] 列联系数计算及假设检验
- JAVA中字符串比较equals()和equalsIgnoreCase()的区别