环境中统一使用UTF-8编码。在代码前面使用request.setCharacterEncoding("UTF-8");文件名正常显示中文,但是在弹出的保存对话框中文件名显示中文。网上找了很多方法,最终发现以下方法能够解决这个问题。
response.addHeader("Content-Disposition", "attachment; filename=" + encodingFileName(fileName));
response.addHeader("content-length", Long.toString(filesize));
public static String encodingFileName(String fileName) {
String returnFileName = "";
try {
returnFileName = URLEncoder.encode(fileName, "UTF-8");
returnFileName = StringUtils.replace(returnFileName, "+", "%20");
if (returnFileName.length() > 150) {
returnFileName = new String(fileName.getBytes("GB2312"), "ISO8859-1");
returnFileName = StringUtils.replace(returnFileName, " ", "%20");
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return returnFileName;
}
注意这里最重要的是要对fileName的进行两次编码。而且要对空格进行处理。
分享到:
相关推荐
在Java编程中,遇到“java下载时文件名乱码”的问题通常是由于编码不一致或处理不当造成的。在处理文件下载时,尤其是从Web服务器下载带有非ASCII字符的文件名时,这种问题尤为常见。让我们深入探讨这个问题,并提供...
总结来说,通过设置正确的Content-Disposition响应头,并将文件名进行UTF-8编码,可以有效解决Web应用中文件下载时的中文文件名乱码问题。同时,根据文件类型设置正确的Content-Type响应头,以及考虑浏览器的兼容性...
本项目针对的一个重要问题就是如何在使用IE11浏览器时避免出现文件名乱码的情况。 首先,我们要理解这个问题的根源。IE11在处理非ASCII字符的文件名时,可能会由于编码不一致导致乱码。这是因为不同的系统和浏览器...
标题中的“jspSmartUpload上传中文文件名乱码问题”是一个常见的技术挑战,特别是在处理Web应用程序时,特别是那些涉及用户上传文件的场景。JSP Smart Upload是早期流行的一个用于Java Web应用的文件上传组件,它...
### 基于Servlet的文件下载技术解析 #### 一、引言 在Web应用程序开发过程中,文件上传和下载是常见的需求之一。特别是在企业级应用中,用户经常需要下载诸如报告文档、数据备份等文件。Java Servlet作为一种强大...
在处理文件上传和下载时,Struts2可能会遇到一个常见的问题,即中文文件名的乱码问题。这是因为不同的系统和软件对字符编码的支持不同,尤其是涉及到网络传输时,编码的兼容性尤为重要。 在“struts2 中文文件名...
8. **文件上传**:在处理文件上传时,特别是涉及文件名或文件内容包含非ASCII字符时,也要注意编码问题。Apache Commons FileUpload库允许设置上传的字符集。 9. **国际化与本地化**:如果你的网站支持多语言,要...
Apache的Commons FileUpload库提供了解决文件名乱码的方法,通过设置`DefaultServletFileUpload.setCharset("UTF-8")`。 6. **数据库操作** 如果Servlet涉及到与数据库的交互,数据库连接字符串、SQL语句中的中文...
通过上述实践和调试,我们已经成功解决了Struts2框架下中文文件名上传和下载的乱码问题。在遇到类似问题时,可以按照这些步骤进行排查和修复。记住,关键在于正确配置Struts2的拦截器、请求编码以及在处理文件名时...
4. **文件上传时的编码问题**:上传文件名或文件内容中的编码不一致。 #### 三、解决乱码问题的具体方法 ##### 3.1 页面本身的乱码问题 - **设置正确的Content-Type**: - 在Servlet中设置响应体的编码格式:`...
// 设置响应头和下载保存的文件名 if (filename != null && filename.length() > 0) { response.setContentType("application/x-msdownload"); response.setHeader("Content-Disposition", "attachment; ...
本篇文章将深入探讨如何使用JSP与Servlet进行文件上传,并特别关注如何解决中文文件名乱码的问题。 首先,我们需要理解文件上传的基本流程。当用户在JSP页面上选择文件并提交表单时,JSP会将文件数据封装到HTTP请求...
4. **文件上传乱码**:在处理文件上传时,乱码问题可能出现在文件名上。Apache Commons FileUpload库提供了设置字符编码的方法: ```java DiskFileItemFactory factory = new DiskFileItemFactory(); factory....
在处理Freemarker模板引擎时,中文乱码问题是一个常见的挑战,尤其是在国际化应用中。Freemarker是一款功能强大的模板引擎,被广泛应用于Web开发中,用于动态生成HTML、XML等文本格式的页面。然而,当涉及到非英文...
在进行文件下载时,文件名如果包含中文字符,可能会出现乱码问题。解决方法是在设置响应头时对文件名进行编码。 ```java protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ...
### Java导出Excel文件并下载到客户端(含解决中文乱码问题) 在现代的企业级应用开发中,数据导出功能是非常常见的一种需求。特别是在B/S架构的应用中,用户经常需要将查询结果导出为Excel文件以便进行后续的数据...
对于Servlet接收Form/Request传递的参数时显示为乱码的问题,我们可以通过在用到request方法的前面加上:request.setCharacterEncoding("GBK");来解决。 在数据库存取的时候产生乱码的问题,我们可以通过选择UTF-8...
### Java + JSP + Servlet 实现文件下载技术详解 #### 技术背景及应用场景 在Web应用开发过程中,实现文件的上传与下载是一项常见的需求。Java作为一种广泛使用的编程语言,在结合JSP(JavaServer Pages)和...
filename=yourfilename.ext`,这会让浏览器弹出保存文件的对话框,提示用户保存文件。 - `Content-Type`: 这个头部信息定义了响应内容的MIME类型。例如,如果要下载的是一个文本文件,类型可能是`text/plain`;...
- **编码问题**:注意处理文件名的编码问题,避免在不同操作系统或浏览器中出现乱码。 - **资源管理**:确保所有打开的文件流在使用完毕后关闭,避免资源泄露。 综上所述,这段代码展示了一个简单的文件下载Servlet...