欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2024-02-03 10:14:04
java文件下载时乱码有两种情况: 1,下载时中文文件名乱码 2,下载时因为路径中包含中文文件名乱码,提示找不到文件 解决方法见下面部分代码 response.setc...

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)如果第一种乱码类型,下载页面遇到以下的中文乱码问题

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

用以下代码解决

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

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

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

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

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

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

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

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

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