经过我测试除了文件名称包含英文逗号谷歌会下载失败外,其它的都没问题了。这个找到解决方法了再补上,先记录一下

String userAgent = request.getHeader("user-agent").toLowerCase();

if (userAgent.contains("msie")) {// IE

try {

fileName = URLEncoder.encode(fileName, "UTF-8").replaceAll("%20", "\\+").replaceAll("%28", "\\(")

.replaceAll("%29", "\\)").replaceAll("%3B", ";").replaceAll("%40", "@").replaceAll("%23", "\\#")

.replaceAll("%26", "\\&").replaceAll("%2C", "\\,").replaceAll("%24", "\\$")

.replaceAll("%25", "\\%").replaceAll("%5E", "\\^").replaceAll("%3D", "\\=")

.replaceAll("%2B", "\\+");

} catch (UnsupportedEncodingException e) {

e.printStackTrace();

}

response.setHeader("Content-Disposition", "attachment; filename=" + fileName);

} else if (userAgent.contains("like gecko")) {// 谷歌

try {

fileName = URLEncoder.encode(fileName, "UTF-8").replaceAll("%20", "\\+").replaceAll("%28", "\\(")

.replaceAll("%29", "\\)").replaceAll("%3B", ";").replaceAll("%40", "@").replaceAll("%23", "\\#")

.replaceAll("%26", "\\&").replaceAll("%2C", "\\,").replaceAll("%24", "\\$")

.replaceAll("%25", "\\%").replaceAll("%5E", "\\^").replaceAll("%3D", "\\=")

.replaceAll("%2B", "\\+").replaceAll("%5B", "\\[").replaceAll("%5D", "\\]")

.replaceAll("%7B", "\\{").replaceAll("%7D", "\\}");

} catch (UnsupportedEncodingException e) {

e.printStackTrace();

}

response.setHeader("Content-Disposition", "attachment; filename=" + fileName);

} else if (userAgent.contains("firefox")) {// 火狐

try {

fileName = new String(fileName.getBytes("UTF-8"), "ISO-8859-1").replaceAll("%20", "\\+")

.replaceAll("%28", "\\(").replaceAll("%29", "\\)").replaceAll("%3B", ";").replaceAll("%40", "@")

.replaceAll("%23", "\\#").replaceAll("%26", "\\&").replaceAll("%2C", "\\,")

.replaceAll("%24", "\\$");

} catch (UnsupportedEncodingException e) {

e.printStackTrace();

}

response.setHeader("Content-Disposition", "attachment;filename=\"" + fileName + "\"");

}

java处理文件下载含特殊符号_java 文件下载名称包含特殊字符处理相关推荐

  1. java 下载文件的文件名乱码_JAVA 文件下载时的文件名乱码解决

    JAVA 文件下载时的文件名乱码解决 if(null != agent && -1 != agent.indexOf("MSIE")){ filename = UR ...

  2. java识别不了欧元 符号_java – 使用unicode显示欧元符号并将字符更改为大写

    如果问题只是关于欧元标志变得混乱 – 那就是程序 import java.io.*; public class Foo { public static void main (String args[] ...

  3. java 错误 找不到符号_Java错误:找不到符号,也找不到原因

    错误: error: cannot find symbol 出现的内容不起作用: 如果我写:" InvoerVakhandler扩展了boven",则该错误消失了,但是随后我得到了 ...

  4. java中ch或者的符号_java 中文标点符号判断

    背景 最近需要处理一些文本,发现想细化一些分类,以前的知识短板就暴露出来了. 这一篇主要是针对网上的资料收集整理. 偏于以后学习查阅. 中文标点符号判断 Java Character 实现Unicod ...

  5. java做一个人类类属性_java.编写一个包含姓名,身高属性的Person类,

    展开全部 //这个是Person 类 public class Person { private final String name;//姓名 private int hight;//身高 publi ...

  6. java 判断特殊字符_java 判断是否包含特殊字符

    判断字符串是否包含特殊字符,示例如下: public class ContentTest { public static void main(String[] args) { String str = ...

  7. Java 支付宝对账功能(查询+文件下载+解压+遍历文件+读文件)

    Java 支付宝对账功能(查询+文件下载+解压+遍历文件+读文件) **需求** **流程** 1 .调用支付宝接口, 获取zip 下载地址 2.工具类代码 3.目录 4.开发环境 5.更新实际收益到 ...

  8. java 无符号转有符号_java有符号无符号的转换

    数据处理中常常遇到基本数据类型的操作,java都是有符号的数据,而与下位机通信中常常遇到无符号的比如uint8, uint16,uint32等等 1.为了完成这个功能还专门采用ByteBuffer的方 ...

  9. java找不到符号_java找不到符号,请帮忙看一下,程序在附件中

    --------------------Configuration: --------------------D:\我的资料库\Documents\Socket聊天室源程序\Socket聊天室源程序\ ...

最新文章

  1. python与excel的应用-python基础之类与对象的应用-操作excel
  2. 数据备份基础之备份类型
  3. mxnet基础到提高(27)-Dense
  4. quartz 表达式解析 详解
  5. qcow2 磁盘在线扩容方法
  6. 【Excel-2010】空值替换
  7. debian 8 和centos 配置java 环境变量的正确姿态
  8. centos7 设备 mariadb-10
  9. 新闻管理系统——系统管理员模块(一)
  10. python连接sap接口_python 连接SAP的方法
  11. 学生用计算机的按键名称,计算器各个键的功能
  12. mysql 三角函数_三角函数公式
  13. pdf转换成jpg python_Python Wand将PDF转换为JPG background
  14. 爬取中国所有银行官网网址信息
  15. 如何在Linux上的命令行中设置Google Chrome浏览器的代理设置?
  16. 将彩色图片分离为RGB三个通道的灰度图,并输出
  17. PHP中preg_match函数详解
  18. 如何写网络舆情数据分析报告的技巧及注意事项详解
  19. el-form表单添加自定义验证
  20. 大疆Onboard SDK 3.2玫瑰线例程浅析

热门文章

  1. 智方6000系标准销售管理系统 v4.57 绿色
  2. 如何高效工作的方式方法
  3. java的学习--第二章 java流程控制
  4. 干掉「卧槽」,就用她了!
  5. 作息时间表 (2005.3 ~ 2005.7)
  6. 算力和硬件的关系_硬件算力需求飙升,为什么软件生意越来越火?
  7. Ubuntu14.04 for ROS indigo的安装(电脑配置)
  8. 0pp0a1支持html吗,OPPOA1是什么处理器
  9. uint16,uint32是什么?
  10. 极客日报:张一鸣以594亿美元成中国互联网首富;苹果称华为商标抄袭AIRPODS被驳回;​Chrome 95发布