jsp下载中文名文件出现乱码的解决方法

happydaisy1985 2009-02-25 03:19:35
我的JSP页面是这样的:
<%@ page contentType="text/html; charset=gb2312"%>
<%String fileName="200901-气象-风.xls";
%>
<a href="../newocean/INC/<%=filename%>"><FONT COLOR="#FF0033"><B>200901-气象-风.xls</B></FONT></a>
</body>
</html>
可是下载页面的文件名一直出现乱码,200901-气象-风.xls文件就放在newocean/INC/目录下。在网上查了一下,说是修改server.xml配置文件,加上URIEncoding="utf-8",可是修改后很多其他页面的汉字传参都显示乱码,其他页面用得编码方式都是gb2312,我不想修改其他的页面,应为工作量比较大。还有的说用

fileName = java.net.URLEncoder.encode(fileName, "UTF-8");

fileName = new String(fileName.getBytes("UTF-8"), "gb2312");对文件名来编码,我都试过了,可都不起作用。
希望大家来帮我看看,可能是别人的方法是对的,我的代码有些地方写得不合适,文件名编码的代码应该怎么加啊?能不能用比较简单的方法来解决这个问题?帮帮忙吧,头疼了很长时间了。
...全文
713 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Josh 2011-03-25
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ouyangxiaokang6 的回复:]
fileName = new String(fileName.getBytes("gb2312"), "ISO8859-1");
试试
[/Quote]

这个可以解决
elsmart 2009-11-18
  • 打赏
  • 举报
回复
跟着一起学学,好像是要加一个过滤器吧,
happydaisy1985 2009-02-25
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zliu789 的回复:]
fileName = new String(fileName.getBytes("ISO8859-1"), "gbk"); 保证可以 不过你最好设置下server.xml配置文件,加URIEncoding="gbk"
[/Quote]
我不想修改server.xml配置文件,修改之后其他页面的链接的中文传参都不起作用了,修改之后是可以的,可是如果不修改,只添加fileName = new String(fileName.getBytes("ISO8859-1"), "gbk"); 还是不起作用
wangju309 2009-02-25
  • 打赏
  • 举报
回复
如果使用场景多还是使用过滤器吧,编码格式转来转去的 不完全可靠,比如我遇到过utf-8转gbk再转为utf-8后会有一些字漏掉
liu_zhaoqf 2009-02-25
  • 打赏
  • 举报
回复
String filename = "工资表.xls";
filename = new String(filename.getBytes(),"ISO8859_1");

我是这样解决问题的,你参照看看。
zou_wei_forever 2009-02-25
  • 打赏
  • 举报
回复
fileName = new String(fileName.getBytes("UTF-8"), "ISO8859-1");
老黄瓜_ 2009-02-25
  • 打赏
  • 举报
回复
fileName = new String(fileName.getBytes("ISO8859-1"), "gbk"); 保证可以 不过你最好设置下server.xml配置文件,加URIEncoding="gbk"
happydaisy1985 2009-02-25
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ouyangxiaokang6 的回复:]
fileName = new String(fileName.getBytes("gb2312"), "ISO8859-1");
试试
[/Quote]
还是不行。
Jacky_Zhu_1983 2009-02-25
  • 打赏
  • 举报
回复
中文乱码问题:应该说所有的情况都碰到了吧,解决也是曲折的,经过摸索,总结如下:

1、所有页面都用UTF-8。
2、写过滤器,设置request.setCharacterEncoding("UTF-8")。
3、javascript脚本里用encodeURI(str)。
4、适当的时候,在jsp里用java.net.URLDecoder.decode(request.getParameter("str"),"UTF-8")。
5、最容易忽略的是使用"":value=" <%=paraFiles%>",一定要有引号。
6、new String(content.getBytes("ISO-8859-1"), "GBK");
ouyangxiaokang6 2009-02-25
  • 打赏
  • 举报
回复
fileName = new String(fileName.getBytes("gb2312"), "ISO8859-1");
试试

81,120

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧