详解关于java文件下载文件名乱码问题解决方案

 更新时间:2020年01月14日 10:07:11   作者:程序猿001  
这篇文章主要介绍了详解关于java文件下载文件名乱码问题解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

JAVA文件下载时乱码有两种情况:

1,下载时中文文件名乱码

2,下载时因为路径中包含中文文件名乱码,提示找不到文件

解决方法见下面部分代码

response.setContentType("multipart/form-data");

      String userAgent = request.getHeader("User-Agent");
      String oraFileName = meetingFile.getFileName();
      String formFileName=oraFileName;
       
      // 针对IE或者以IE为内核的浏览器:
      if (userAgent.contains("MSIE") || userAgent.contains("Trident")) {
        formFileName = java.net.URLEncoder.encode(formFileName, "UTF-8");
      } else {
        // 非IE浏览器的处理:
        formFileName = new String(formFileName.getBytes("UTF-8"), "ISO-8859-1");
      }
      response.setHeader("Content-disposition",
          String.format("attachment; filename=\"%s\"", formFileName));
      response.setContentType("application/vnd.ms-excel;charset=utf-8");
      response.setCharacterEncoding("UTF-8");
          
            ServletOutputStream out;
      // 通过文件路径获得File对象
      File file = null;
      if (meetingFile != null) {
        file = new File(path + "upload/"+oraFileName);
      }

(1)如果第一种乱码类型,下载页面遇到以下的中文乱码问题

用以下代码解决

(2)如果下载遇到第二种乱码问题,如图:

用以下代码解决:即首先确保tomcat ,eclipse等为utf-8编码

然后JAVA中这样与第一种对文件名编码分开,使它们分别编码,互不影响。

注意:以前目前测试可解决火狐与IE等浏览器下载时的编码问题,而针对WIN10自带的浏览器不时仍会出现乱码现象,谁要是有好的能兼容所有浏览器的方法希望能与本人分享,感激不尽。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • SpringBoot项目实现日志打印SQL的常用方法(包括SQL语句和参数)

    SpringBoot项目实现日志打印SQL的常用方法(包括SQL语句和参数)

    有时候遇到问题需要根据我们编写的SQL进行分析,但如果不进行一些开发或者配置的话,这些SQL是不会打印到控制台的,它们默认是隐藏的。下面给大家介绍几种常用的方法,感兴趣的朋友跟随小编一起看看吧
    2024-04-04
  • mybatis-plus 分页类型转换工具类

    mybatis-plus 分页类型转换工具类

    用mybatis-plus 的分页对象的时候,因为用mybatis-puls 查询出来的分页对象的records里的泛型是实体,有时候需要将实体转换为前端展示的对象,所有写了一个分页数据的类型转换工具,解决这个问题,对mybatis-plus 分页工具类相关知识感兴趣的朋友一起看看吧
    2022-03-03
  • SpringBoot深入分析运行原理与功能实现

    SpringBoot深入分析运行原理与功能实现

    我们发现springBoot程序开发比spring程序编写起来容易的多。配置简洁,依赖关系简单,启动运行容易。那么结下了我们我们就要思考一下入门程序中的这些功能是怎么实现的
    2022-09-09
  • java虚拟机是做什么用的

    java虚拟机是做什么用的

    在本篇文章里小编给大家整理的是一篇关于java虚拟机作用等相关内容,对此有兴趣的朋友们可以学习参考下。
    2021-01-01
  • java题解Leetcode 8字符串转换整数

    java题解Leetcode 8字符串转换整数

    这篇文章主要为大家介绍了java题解Leetcode 8字符串转换整数实现,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-06-06
  • Scala递归函数调用自身

    Scala递归函数调用自身

    这篇文章主要介绍了Scala递归函数,Scala递归函数是一种函数可以调用自身的函数,直到满足某个特定的条件为止。在函数式编程的语言中,递归函数起着重要的作用,因为它可以用来表示循环或迭代的逻辑
    2023-04-04
  • Springcloud Nacos基本操作代码实例

    Springcloud Nacos基本操作代码实例

    这篇文章主要介绍了Springcloud Nacos基本操作代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-12-12
  • 使用Java实现压缩文件夹并打包下载

    使用Java实现压缩文件夹并打包下载

    这篇文章主要为大家详细介绍了如何使用Java实现压缩文件夹并打包下载,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-03-03
  • Java 中不全部使用 Static 方法的理由

    Java 中不全部使用 Static 方法的理由

    这篇文章主要介绍了Java 中不全部使用 Static 方法的理由,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-08-08
  • 深入理解JavaWeb中过滤器与监听器的应用

    深入理解JavaWeb中过滤器与监听器的应用

    这篇文章主要介绍了JavaWeb中过滤器与监听器的应用,过滤器能够对匹配的请求到达目标之前或返回响应之后增加一些处理代码,监听器是一个接口内容由我们实现,会在特定时间被调用,感兴趣想要详细了解可以参考下文
    2023-05-05

最新评论