最近使用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),其他浏览器未作测试。
分享到:
相关推荐
Struts2下载文件时中文乱码和空格处理
解决Struts2下载中文出现乱码情况,已通过测试,
在struts2中解决页面中出现的乱码问题,写在web.xml中
struts中文乱码问题解决详细步骤(两种方法)
Struts2文件上传下载 上传为单个上传, 下载包括中文乱码的问题:前台传后台时中文乱码,下载时显示时中文乱码,以及URLEncoder
解决中文乱码的问题
Struts实现文件下载中文乱码解决方案收藏
struts2.2.1文件下载及中文乱码问题解决.pdf
struts乱码解决方法struts乱码解决方法struts乱码解决方法struts乱码解决方法struts乱码解决方法struts乱码解决方法struts乱码解决方法struts乱码解决方法
struts2配置文件传值中文乱码
关于StrutsPrepareAndExecuteFilter最新的过滤器,在Struts.xml定义常量<constant name="struts.i18n.encoding" value="UTF-8"/>...关于Struts2各个版本、各种过滤器,用get方式提交都方法都无法解决的中文乱码问题。
struts2中存在中文乱码的问题解决方 中文乱码,首先要区分是页面乱码、action乱码,还是数据库乱码。 大致的原理是java使用unicode编码-->window使用gbk(gb2312的扩展集)--mysql默认使用utf-8(unicode的一种编码...
Struts中中文乱码的解决方法 Struts中中文乱码的解决方法 Struts中中文乱码的解决方法
Struts2资源文件在jsp页面中显示乱码解决
Struts中文乱码解决方案
之前,为中文文件名出现乱码在google上搜索是大量资源,说的很好,但都未能通过验证。此次认真阅读,上机调试终于通过。
struts2实现文件上传。解决中文url和中文文件名乱码问题
Myeclipse 6.5, JDK1.6,Tomcat 6.0 未解决点击取消报错的问题,可能是jdk版本问题
JSP struts2 url传参中文乱码解决办法.docx