`

java文件下载的文件名乱码问题的解决

    博客分类:
  • java
阅读更多

在Java的web开发中,文件下载功能的文件名文件名乱码问题是经常遇到的。

对于这个问题,不同的浏览器,解决的方法不太一样。

IE的话,通过URLEncoder对filename进行UTF8编码。

而其他的浏览器(firefox、chrome、safari、opera),则要通过字节转换成ISO8859-1了。

示例代码(通过测试):

  1. if (request.getHeader("User-Agent").toUpperCase().indexOf("MSIE") > 0) {  
  2.     filename = URLEncoder.encode(filename, "UTF-8");  
  3. else {  
  4.     filename = new String(filename.getBytes("UTF-8"), "ISO8859-1");  

文件下载功能在FireFox和IE中的差异(当下载文件文件名中出现空格时,在FireFox中文件名会被截断)
最近在做文件下载时发现,当下载的文件名中出现空格的时候在IE中可以正常下载,在FireFox中会出现文件名被截断的情况(如当文件名为:新建 文件夹.txt时,在IE中正常下载,在FireFox中则只会显示"新建"),
解决思路:首先判断使用的浏览器,然后再根据不同的浏览器做相应的处理,即可解决文件下载时文件名乱码和文件名被截断问题。
具体解决办法如下:

String agent = (String)request.getHeader("USER-AGENT");
if(agent != null && agent.indexOf("MSIE") == -1) {
// FF
String enableFileName = "=?UTF-8?B?" + (new String (Base64.encodeBase64(flieName.getBytes("UTF-8")))) + "?=";
response.setHeader("Content-Disposition", "attachment; filename=" + enableFileName);
}else {
// IE
String enableFileName = new String(flieName.getBytes("GBK"), "ISO-8859-1");
response.setHeader("Content-Disposition", "attachment; filename=" + enableFileName);
}
分享到:
评论

相关推荐

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

    Java文件下载文件名乱码问题解决方案 Java 文件下载文件名乱码问题是指在下载 Java 文件时,文件名出现乱码现象,影响下载文件的正确性。这种问题通常有两种情况:一是下载时中文文件名乱码,二是下载时因为路径中...

    Java实现文件下载并解决中文文件名乱码

    本文将详细介绍如何使用Java实现文件下载功能,并重点讲解如何解决中文文件名乱码的问题。 #### 一、基本原理与步骤 1. **读取文件**:首先需要将要下载的文件读取到内存中。 2. **设置响应头**:为了正确地告知...

    Java中压缩与解压--中文文件名乱码解决办法

    ### Java中压缩与解压——中文文件名乱码解决办法 #### 一、问题背景及原理分析 在Java中处理文件的压缩与解压时...通过上述步骤,可以有效地解决Java中压缩与解压时中文文件名乱码的问题,使得程序更加健壮和实用。

    java下载时文件名乱码

    在Java编程中,遇到“java下载时文件名乱码”的问题通常是由于编码不一致或处理不当造成的。在处理文件下载时,尤其是从Web服务器下载带有非ASCII字符的文件名时,这种问题尤为常见。让我们深入探讨这个问题,并提供...

    jsch-0.1.53 使用sftp协议上传下载文件名中文乱码解决办法

    jsch-0.1.53 不支持修改编码格式,sftp.setFilenameEncoding("GBK");这样修改是不起作用的,所以必须修改源码。此处是修改源码后重新导出的jar包。

    jsp实现文件下载与中文文件名乱码问题解决

    本文将深入解析如何在JSP中实现文件下载,并解决中文文件名乱码的问题。 首先,我们需要了解HTTP协议在处理文件下载时的角色。当用户请求下载一个文件时,服务器需要设置响应头来指示浏览器如何处理这个响应。在JSP...

    服务器下载word乱码解决方案(文件名乱码、内容乱码)

    往往开发环境和生产环境在环境部署时会遇到很多奇怪的问题,此次word文档下载就被卡住了,通过一番努力终于找到了原因,分享给大家。上传文件txt格式,内有方法详细的代码注释及原因说明,jar包比较常见,大家自行...

    welogic struts2文件下载中文件名乱码:在tomcat中是好的哦

    解决WeLogic服务器中Struts2文件下载时的文件名乱码问题,需要综合考虑编码转换、Struts2配置以及Java代码实现等多方面因素。通过上述方法,可以有效避免文件名乱码,确保文件下载功能在WeLogic服务器环境下稳定运行...

    解决JMeter上传包含中文文件名乱码ApacheJMeter_http.jar

    总之,解决JMeter上传中文文件名乱码问题需要对JMeter的源代码有深入的理解,并能针对性地进行修改。通过确保正确处理文件名的编码,我们可以避免在测试过程中遇到的乱码困扰,从而提高测试的准确性和效率。

    java导出文件文件名处理

    本文将详细介绍如何在Java中处理导出文件时的文件名问题,确保用户能够正常下载带有中文或其他特殊字符的文件名。 #### 知识点一:理解文件名编码问题 在Web应用中,当服务器向客户端发送文件时,HTTP协议中会包含...

    文件下载response.setHeader()下载中文文件名乱码问题解决办法.pdf

    总结来说,通过设置正确的Content-Disposition响应头,并将文件名进行UTF-8编码,可以有效解决Web应用中文件下载时的中文文件名乱码问题。同时,根据文件类型设置正确的Content-Type响应头,以及考虑浏览器的兼容性...

    Java下载文件时文件名乱码问题解决办法

    总的来说,解决Java下载文件时的文件名乱码问题,需要理解HTTP协议和浏览器对文件名编码的处理差异,以及利用适当的编码转换方法,确保在所有支持的浏览器中都能正确显示和保存文件名。在编写代码时,一定要注意兼容...

    多文件上传例子(解决中文乱码)

    多文件上传例子,彻底解决中文乱码问题了。总结中文乱码问题如下: 1、所有页面都用UTF-8。 2、写过滤器,设置request.setCharacterEncoding("UTF-8")。 3、javascript脚本里用encodeURI(str)。 4、适当的时候,在...

    Java中FTPClient上传中文目录、中文文件名乱码问题解决方法

    在Java编程中,使用FTPClient进行文件传输时,可能会遇到一个常见的问题,即当尝试创建中文目录或上传具有中文名称的文件时,这些目录名和文件名会显示为乱码,通常表现为“??”这样的形式。这个问题主要是由于FTP...

    ZipOutputStream 压缩文件以及乱码问题解决方案

    本文将深入探讨如何使用ZipOutputStream进行文件压缩,并解决可能出现的乱码问题。 首先,我们来看`ZipOutputStream`的基本用法。这个类继承自`FilterOutputStream`,提供了创建ZIP文件的功能。以下是一个简单的...

    linux下的文件名乱码,转为正常

    解决Linux下文件名乱码的问题,关键在于理解和设置正确的locale,以及正确使用各种命令处理文件名。通过上述方法,你应该能够有效地处理和避免文件名乱码问题,确保文件管理的顺利进行。记得在操作过程中要谨慎,...

    不同浏览器上中文文件名的下载乱码问题

    不同浏览器上中文文件名的下载乱码问题 浏览器IEChromeSafariOpera 浏览器能正确识别的编码格式

    Java文件下载,Java文件下载中文乱码,Java通用文件下载

    在Java编程中,文件下载是常见的任务之一,特别...通过以上步骤,你可以实现一个基本的Java文件下载功能,并解决中文文件名乱码的问题。对于更复杂的应用场景,如大文件分块下载、断点续传等,还需要进一步优化和扩展。

Global site tag (gtag.js) - Google Analytics