浏览器能正确识别的编码格式,只要按照这样的编码来设置对应的Content-Disposition,那么应该就不会出现中文文件名的乱码问题了。
首先,Content-Disposition值可以有以下几种编码格式
1. 直接urlencode:
Content-Disposition:
attachment; filename="struts2.0%E4%B8%AD%E6%96%87%E6%95%99%E7%A8%8B.chm"
2. Base64编码:
Content-Disposition:
attachment;
filename="=?UTF8?B?c3RydXRzMi4w5Lit5paH5pWZ56iLLmNobQ==?="
3. RFC2231规定的标准:
Content-Disposition:
attachment; filename*=UTF-8''%E5%9B%9E%E6%89%A7.msg
4. 直接ISO编码的文件名:
Content-Disposition:
attachment;filename="测试.txt"
然后,各浏览器支持的对应编码格式为:
1. IE浏览器,采用URLEncoder编码
2. Opera浏览器,采用filename*方式
3. Safari浏览器,采用ISO编码的中文输出
4. Chrome浏览器,采用Base64编码或ISO编码的中文输出
5. FireFox浏览器,采用Base64或filename*或ISO编码的中文输出
实例代码:
String agent = request.getHeader("USER-AGENT");
if(agent != null && agent.indexOf("MSIE") != -1) {
fileName = URLEncoder.encode(fileName,"UTF8");
} else {
fileName = new String(fileName.getBytes("UTF-8"), "ISO8859-1");
}
response.setContentType("application/octet-stream;charset=UTF-8");
response.setHeader("Content-Disposition","attachment; filename=\"" + fileName +"\"");
try {
FileCopyUtils.copy(new FileInputStream(file),response.getOutputStream());
} catch (IOException e) {
e.printStackTrace();
}
}
分享到:
相关推荐
### 解决不同浏览器下载时中文名乱码问题 在Web开发过程中,经常遇到的一个问题是当用户尝试下载包含中文字符的文件名时,会出现乱码的情况。这是因为不同的浏览器处理文件名编码的方式有所不同,导致服务器端设置...
不同浏览器上中文文件名的下载乱码问题 浏览器IEChromeSafariOpera 浏览器能正确识别的编码格式
在网页中,中文乱码的问题时常出现。以前我遇到乱码问题时,就是不停的尝试不同的编码方式,直到成功。昨天项目又遇到了这个问题,我于是做了简单的测试。 html文件是有编码方式的,比如"UTF-8"、"GBK"等等。...
下面是一个具体的例子,展示了如何通过JavaScript函数实现文件下载,并处理URL中的中文乱码问题: ```html ('${test.fileUrl}');">${test.fileName} function downLoadFile(addr) { var url = "/RCPFM/...
首先,我们需要理解问题的核心:浏览器在请求服务器上的资源,特别是文件时,如果文件名包含中文字符,可能会因为编码不一致导致乱码。这主要涉及到字符编码的两个关键概念——Unicode和字符编码转换。 1. **...
解决Jmeter5.5、Jmeter5.5、Jmeter5.5上传文件中文乱码问题和录制脚本中文乱码问题,其他版本请勿使用! 使用时替换原本的lib\ext目录下的ApacheJMeter_http.jar文件并重启,上传文件时,需要勾选“对POST使用...
然而,在实际操作过程中可能会遇到一个常见问题:当文件名包含中文字符时,下载后的文件名可能出现乱码的情况。本文将详细介绍如何使用Java实现文件下载功能,并重点讲解如何解决中文文件名乱码的问题。 #### 一、...
解决Jmeter5.3上传文件中文乱码问题和录制脚本中文乱码问题,替换原本的lib\ext目录下的ApacheJMeter_http.jar文件,上传文件时,需要勾选“对POST使用multipart / form-data” 和 “与浏览器兼容的头”选项,并在...
分析这个文件可以帮助我们深入理解解决IE11下载文件乱码问题的方法。具体来说,这个文件可能包含了Servlet的实现,通过设置正确的HTTP响应头,确保文件名在下载过程中正确显示。 总的来说,解决Java Web中IE11下载...
在IT领域,尤其是在Web开发中,处理文件下载和解决中文文件名乱码问题是常见的需求之一。本文将深入探讨如何通过二进制流转换为文件来实现文件下载,并着重讲解如何解决中文文件名出现的乱码问题。 ### 文件下载...
### Struts2下载文件中文乱码处理 在Web开发中,使用Struts2框架进行文件下载操作时,经常遇到的一个问题是文件名中的中文字符显示为乱码。这主要是因为浏览器和服务器之间的编码不一致所导致的。为了确保用户能够...
在IT领域,中文乱码是一个常见的问题,尤其是在处理文件下载和显示时。本文将深入探讨“下载文件提示框中文乱码”这一主题,提供相关的知识背景、原因分析以及解决方案。 一、乱码产生的原因 1. 编码不兼容:在...
例如,解决Chrome浏览器标题栏中文乱码问题需要对字体配置文件进行修改。 知识点8: 字体配置文件的修改方法 字体配置文件的修改方法是通过使用文本编辑器打开配置文件,然后修改相应的配置项来实现的。例如,修改...
在处理文件下载时,Struts2提供了一套完整的解决方案,包括处理中文文件名的乱码问题。在标题提到的场景中,开发者可能遇到了在使用Myeclipse 6.5集成开发环境,JDK1.6和Tomcat 6.0服务器环境下,通过Struts2进行...
在上述代码中,`header()`函数用于设置HTTP响应头,告知浏览器文件的类型和编码,确保在下载时正确解析。`fopen('php://output', 'w')`打开的是一个伪文件,其实体是浏览器的输出流。数据会被直接输出到浏览器,用户...
解决中文乱码问题需要从多个方面入手,包括设置Eclipse的编码方式、浏览器的字符设置、数据库的字符集选择等。同时,我们还需要根据实际情况选择合适的解决方式,以便正确地显示和存储中文字符。
在这个文件中,我们将对 ACCESS+ASP 中文乱码问题的解决方法进行总结和借鉴。 解决方法一:在每一页的开头加上 `<%@ CODEPAGE = "936" %>` 或 `<%@ LANGUAGE="VBSCRIPT" CODEPAGE="936"%>`。这可以将.asp 文件的...
本文用 C# 代码解决了在目前四种流行浏览器中Asp.net 输出文件流时文件名的空格及中文字符乱码这两个问题。使用本文的代码,你将可以让 IE(Internet Explorer)、Opera、Firefox 及 Chrome 的用户享受到没有乱码且...
通过修改Tomcat配置文件中的`URIEncoding`属性以及在Servlet中通过`response.setContentType()`和`request.setCharacterEncoding()`方法来设置字符编码,可以有效解决中文乱码问题。此外,还可以通过字符集转换的...