// 其中 Base64 类来自 org.apache.commons.codec 组件 一个40多k的jar
public String encodeFileName(HttpServletRequest request, String fileName) throws UnsupportedEncodingException {
String agent = request.getHeader("USER-AGENT");
if (null != agent && -1 != agent.indexOf("MSIE")) {
return URLEncoder.encode(fileName, "UTF-8").replace("+", "%20");
}else if (null != agent && -1 != agent.indexOf("Mozilla")) {
return "=?UTF-8?B?"+(new String(Base64.encodeBase64(fileName.getBytes("UTF-8"))))+"?=";
} else {
return fileName;
}
}
使用例如下载Excel文件。
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-Disposition", "attachment; filename=\"" + encodeFileName(request, fileName) + "\"");
分享到:
相关推荐
彻底解决Asp.net 文件下载时文件名的中文乱码和空格异常全球性技术难题 本文用 C# 代码解决了在目前四种流行浏览器中Asp.net 输出文件流时文件名的空格及中文字符乱码这两个问题。使用本文的代码,你将可以让 IE...
### Java实现文件下载并解决中文文件名乱码 在日常的Web开发中,经常会遇到需要让用户下载文件的需求,尤其是在企业级应用中。然而,在实际操作过程中可能会遇到一个常见问题:当文件名包含中文字符时,下载后的...
C#HTML导出excel时文件名,IE,火狐浏览器不兼容,乱码。故此将ExcelHelper.FileName(Request.ServerVariables["HTTP_USER_AGENT"].ToUpper(), $"文件名{DateTime.Now:_yyyyMMdd}", out filename, out encoding);
总的来说,解决Java下载文件时的文件名乱码问题,需要理解HTTP协议和浏览器对文件名编码的处理差异,以及利用适当的编码转换方法,确保在所有支持的浏览器中都能正确显示和保存文件名。在编写代码时,一定要注意兼容...
文件名乱码通常是因为浏览器在处理文件下载时,没有正确地编码和解码包含特殊字符的文件名。这与浏览器的实现方式和HTTP协议的处理有关。例如,Internet Explorer (IE) 和 Firefox 对文件名编码的处理方式就有所不同...
通过上述知识点的梳理,我们可以了解到在PHP中实现文件下载以及处理IE下中文文件名乱码问题的原理和方法。正确的编码方式和HTTP头部信息设置对确保跨浏览器兼容性和下载功能正常工作至关重要。同时,在进行这类操作...
### 解决不同浏览器下载时中文名乱码问题 在Web开发过程中,经常遇到的一个问题是当用户尝试下载包含中文字符的文件名时,会出现乱码的情况。这是因为不同的浏览器处理文件名编码的方式有所不同,导致服务器端设置...
本文将详细介绍如何在Java中处理导出文件时的文件名问题,确保用户能够正常下载带有中文或其他特殊字符的文件名。 #### 知识点一:理解文件名编码问题 在Web应用中,当服务器向客户端发送文件时,HTTP协议中会包含...
发现很多园子里的人在处理Response下载文件名是... 如果想在FireFox下输出没有编码的文件,并且IE下输出的文件名中空格不为+号,就要多一次判断了。 代码如下: if (Request.UserAgent.ToLower().IndexOf(“msie”) > -
### Struts2下载文件中文乱码处理 ...通过这些方法的综合运用,可以有效解决在文件下载过程中出现的中文乱码问题,从而提升用户体验。在实际应用中,还需要结合具体的业务场景进行适当的调整和优化。
`filename`后的内容是下载文件时在用户浏览器中显示的文件名。 - `readfile("imgs/test_Zoom.jpg");` 这行代码将指定文件的内容读取到输出流中,用户浏览器将接收这些数据并触发下载。 2. **支持所有主流浏览器的...
在文件下载过程中,客户端需要知道下载的内容类型、文件名、文件长度等信息。这其中,`Content-Type`头部用于指定内容类型,而`Content-Disposition`头部则用于指示浏览器以附件形式处理数据,同时提供一个默认的...
标题和描述中提到的问题是关于FF(Firefox)浏览器和IE(Internet Explorer)在下载文件时出现的乱码问题。这通常是由浏览器对文件名编码方式的不同处理引起的,尤其是在处理中文文件名时。以下是对这个问题的详细...
在PHP编程中,当涉及到跨浏览器的文件下载时,可能会遇到中文文件名显示为乱码的问题。这个问题主要是由于不同浏览器对文件名编码处理方式的差异所导致的。本文将详细介绍如何通过PHP解决这一问题。 首先,我们需要...