`
robindut
  • 浏览: 46355 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

Struts2文件下载中文名乱码解决方法

阅读更多

最近使用Sturts2作文件下载时,发现在不同的浏览器上会有中文文件名乱码的问题,现在把解决方法放在这里,以便留个备份。

 

struts2配置文件如下:

 

<action name="fileDownLoad" class="com.test.FileDownloadAction">
			<result name="download" type="stream">
				<param name="contentType">application/pdf;charset=UTF-8</param>
				<param name="contentDisposition">attachment;filename="${filename}.pdf"</param>
				<param name="inputName">inputStream</param>
				<param name="bufferSize">4096</param>
			</result>
		</action>

 

 FileDownloadAction.java的文件名处理的 代码如下(其他代码忽略):

 

/**
	 * 下载文件名编码,对于不同的浏览器使用不同的编码格式
	 * 
	 * @param request 
	 * @param name
	 */
	private String processFileName(HttpServletRequest request, String name)
			throws UnsupportedEncodingException {
		String filename = null;
		String agent = request.getHeader("USER-AGENT");
		if (null != agent){
			if (-1 != agent.indexOf("Firefox")) {//Firefox
				filename = "=?UTF-8?B?" + (new String(org.apache.commons.codec.binary.Base64.encodeBase64(name.getBytes("UTF-8"))))+ "?=";
			}else if (-1 != agent.indexOf("Chrome")) {//Chrome
				filename = new String(name.getBytes(), "ISO8859-1");
			} else {//IE7+
				filename = java.net.URLEncoder.encode(name, "UTF-8");
				filename = StringUtils.replace(filename, "+", "%20");//替换空格
			}
		} else {
			filename = name;
		}

		return filename;
	}

网上很多说直接使用"ISO8859-1"编码格式的问题,经过验证并不能很好的解决问题,还是需要对于不同的浏览器使用不同的编码格式,浏览器兼容性的问题真心纠结。。。

注:这里只选取了三种主流浏览器(ie7+,firefox8.0,chrome18.0),其他浏览器未作测试。

2
0
分享到:
评论
2 楼 ITvision 2013-08-14  
嗯,就是的,ISO8859-1只支持chrome。
1 楼 xjsimon 2013-08-12  
不错,好方法

相关推荐

    struts2上传下载 解决中文文件名乱码

    通过上述实践和调试,我们已经成功解决了Struts2框架下中文文件名上传和下载的乱码问题。在遇到类似问题时,可以按照这些步骤进行排查和修复。记住,关键在于正确配置Struts2的拦截器、请求编码以及在处理文件名时...

    struts2.2.1文件下载及中文乱码问题解决.pdf

    在使用Struts2进行文件下载功能时,可能会遇到中文乱码的问题。本篇主要讨论如何解决Struts2.2.1版本中文件下载时的中文乱码问题,以及相关的配置和实现细节。 首先,文件下载的关键在于设置正确的HTTP响应头。`...

    Struts2乱码终极解决办法

    ### Struts2乱码终极解决办法 #### 一、引言 在开发基于Struts2框架的应用时,经常遇到的一个问题就是中文乱码。这不仅影响用户体验,还可能导致数据处理错误。本文将详细介绍如何彻底解决Struts2中的乱码问题,并...

    struts解决中文乱码问题

    本文将深入探讨如何解决Struts框架下的中文乱码问题。 首先,我们来看一个具体的实例。在登录验证的例子中,原本只要用户名(username)和密码(userpass)都是"123"就会返回成功页面。现在,我们将其升级,要求...

    struts2获取参数,解决乱码,跳转

    在这个主题中,我们将深入探讨Struts2如何获取参数、解决乱码问题以及实现页面跳转。 首先,让我们来看看Struts2如何获取HTTP请求中的参数。在Struts2中,我们可以使用Action类来接收和处理请求参数。Action类是...

    struts乱码解决方法

    ### Struts乱码解决方法详解 #### 一、引言 在使用Struts框架进行Web应用开发时,可能会遇到字符编码问题导致的数据显示乱码。本文将详细介绍如何解决Struts项目中的乱码问题,帮助开发者确保数据正确无误地显示。...

    Struts上传,已经处理好乱码问题

    本篇文章将详细探讨如何在Struts中处理文件上传并解决乱码问题。 首先,我们需要了解Struts文件上传的基本原理。在Struts中,文件上传是通过`Commons FileUpload`库来实现的,它是Apache Commons项目的一部分,专门...

    Struts2中实现文件下载(修正中文问题).pdf

    在Struts2中,文件下载是一个常见的需求,尤其是处理用户请求获取服务器上存储的文件,例如文档、图片或者视频。在处理中文文件名时,可能会遇到编码问题,导致文件名显示为乱码。本篇文章将详细介绍如何在Struts2中...

    struts下的汉字乱码问题

    总结来说,解决Struts下的汉字乱码问题,需要从页面、过滤器、服务器配置和Struts核心Servlet等多方面进行设置,确保在整个请求生命周期中,中文字符始终以正确的编码进行处理。这不仅涉及了前端的展示,还涉及到...

    struts2.1.6解决乱码 补充

    ### Struts2.1.6解决乱码问题详解 在Web开发中,字符编码问题一直是个头疼的问题,尤其是在处理中文等多字节字符时。Struts2作为一个流行的Java Web框架,同样面临着这样的挑战。本文将深入探讨如何在Struts2.1.6...

    struts2技巧,笔记.zip指定404,500页面 utf-8过滤器 防SQL注入 解决乱码

    这个压缩包文件包含了一系列与Struts2相关的技术点,主要集中在错误页面配置、字符编码问题、防止SQL注入和Struts2框架的特性上。以下是这些知识点的详细解释: 1. **错误页面配置**: 在Web应用中,当请求无法...

    struts与hibernate实现文件的上传与动态下载

    2. **处理中文文件名**:为了解决中文文件名的乱码问题,可以生成一个基于时间戳的唯一文件名,例如在`getNumberFileName()`方法中。 3. **下载代码**:在Action中,创建一个输入流读取文件,然后通过Servlet的`...

    使用拦截器解决中文乱码

    ### 使用拦截器解决中文乱码 ...在Struts2框架中,使用自定义拦截器解决中文乱码问题是一种高效且实用的方法。通过本教程的学习,开发者能够快速掌握如何实现这一功能,从而提升Web应用程序的用户体验。

    使用struts2.0上传文件,完全解决了中文乱码问题

    使用struts2.0上传文件,完全解决了中文乱码问题。运行项目前请先在D盘建立个名tmp的文件夹,实例上传的文件将保存在tmp文件夹中。文件大小限制为15M,该示例蛮完整的,有些架包忘删了导致项目有点大。

    开发STRUTS应用的步骤及中文乱码处理归纳.pdf

    通过以上步骤,我们可以成功地开发一个STRUTS应用,并解决可能出现的中文乱码问题。在整个过程中,良好的代码组织和规范的配置管理是关键,这样可以提高代码的可读性和维护性。同时,对字符编码的理解和正确处理,能...

    struts文件

    - **解决表单提交中文乱码问题**:通过配置相关的常量来自动解决表单提交数据中的中文乱码问题。 - 例如,设置字符编码常量`struts.i18n.encoding=UTF-8`。 通过以上详细介绍,我们可以看出Struts2框架是一个功能...

    struts2如何生成XML文件

    3. **配置Struts.xml文件**:在Struts2中,需要在`struts.xml`文件中配置结果类型为`xslt`,并指定`exposedValue`参数指向`getDocument()`方法返回的`Document`对象。 ```xml &lt;param name="exposedValue"&gt;...

    jspsmartupload中文乱码解决版

    本篇将详细讨论如何解决`jspsmartupload`中的中文乱码问题,并结合`struts1.2`框架提供实例。 首先,理解乱码产生的原因至关重要。乱码通常是由字符编码的不匹配导致的。在HTTP请求中,数据默认是以ISO-8859-1编码...

    struts2下载

    Struts2是一款非常著名的开源...了解其下载、安装和配置过程,以及如何解决可能出现的中文乱码问题,是成功使用Struts2进行开发的基础。在实际工作中,不断学习和掌握新的技术和最佳实践,能让你在IT行业中保持竞争力。

Global site tag (gtag.js) - Google Analytics