struts2 文件下载文件名中文乱码及变成空格问题

使用tomcat作为web容器的话,因为tomcat默认使用ISO8859-1编码,而程序使用utf-8编码,所以在Web编程中经常需要在代码中进行字符串编码的转换。为了省掉这以繁琐的步骤,可以在tomcat目录下的conf/server.xml中设置
<Connector URIEncoding="utf-8" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
将默认字符集编码设置utf-8,与程序一致,基本可解决中文乱码问题。

但这次进行文件下载的时候,中文文件名传到浏览器的时候却变成了空格。从网上试了很多方法没有效果,最后终于发现了一两篇有用的文章。这里先说一下解决方法。
因为文件名是设置在HTTP header中的,而Http的请求头要求以ISO8859-1编码,所以在设置文件名的时候需要将中文转换成ISO8859-1编码
name = new String(name.getBytes(), "ISO8859-1");
至于为什么不用name.getBytes(“ISO8859-1”)呢?因为ISO8859-1编码没有包含中文字符,无法正确的直接转码。
网上有人说要在配置文件中设置
<param name="contentType">application/octet-stream;charset=ISO8859-1</param>
我试了下,并没有效果。我认为的原因是contentType所针对的是http请求体的内容,对于请求头不起作用。

以下是代码

<!-- struts.xml文件-->
<result type="stream" name&#
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值