JSP中中文文件名不能弹出下载对话框的问题.

huangxiaofei 2009-03-04 03:59:16
我在JSP页面中需要用href指向一个WORD文档,然后点击该连接就应该弹出下载框。现在遇到的问题是,如果word文档的文件名是中文的,点击以后无法弹出下载对话框,而是转向一个错误的页面。如果word文档的文件名是英文的,那么一切正常。
在网上搜索了一下以后,尝试用编码转化解决问题:
String filename="考生成绩表.xls";
response.setHeader("Content-disposition","attachment;filename="+new String(filename.getBytes("gb2312"),"iso8859-1"));
但是这样做还是不行.

我应该怎么做才能让中文的文件可以正常弹出下载对话框呢? 我用的JBOSS服务器。


...全文
844 7 打赏 收藏 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
ouyangxiaokang6 2009-03-04
  • 打赏
  • 举报
回复
gb2312改成和你的jsp编码一样的就可以了
ChocooM 2009-03-04
  • 打赏
  • 举报
回复
response.setHeader( "Content-Disposition", "attachment;filename=" + new String( fileName.getBytes("gbk"), "ISO8859-1" ) ); 
yadg 2009-03-04
  • 打赏
  • 举报
回复
我还以为你是服务器端生成的文件
如果是客户端传参数过去的话,你的保证在类里 用system.out.print的时候能打出中文来,才能使用上面的代码。
wangju309 2009-03-04
  • 打赏
  • 举报
回复
转为ascii码?
huangxiaofei 2009-03-04
  • 打赏
  • 举报
回复
我是想直接把文件名转换成href可以转向的地址。
比如:
<%String filename ="特价图书.xls";
转换......
%>

<a href=<%=filename%> ......>特价图书</a>

然后我点击页面上的超链接要可以弹出下载窗口。
Jacky_Zhu_1983 2009-03-04
  • 打赏
  • 举报
回复
方法1:
response.setHeader("Content-Disposition", "attachment; filename=" + java.net.URLEncoder.encode(fileName, "UTF-8"));
下载的程序里有了上面一句,一般在IE6的下载提示框上将正确显示文件的名字,无论是简体中文,还是日文。但是文字只要超过17个字,就不能下载了。
一. 通过原来的方式,也就是先用URLEncoder编码,当中文文字超过17个时,IE6 无法下载文件。这是IE的bug,参见微软的知识库文章 KB816868 。原因可能是IE在处理 Response Header 的时候,对header的长度限制在150字节左右。而一个汉字编码成UTF-8是9个字节,那么17个字便是153个字节,所以会报错。而且不跟后缀也不对.
方法2:
response.setHeader( "Content-Disposition", "attachment;filename=" + new String( fileName.getBytes("gb2312"), "ISO8859-1" ) );
在确保附件文件名都是简 体中文字的情况下,那么这个办法确实是最有效的,不用让客户逐个的升级IE。如果台湾同胞用,把gb2312改成big5就行。但现在的系统通常都加入了 国际化的支持,普遍使用UTF-8。如果文件名中又有简体中文字,又有繁体中文,还有日文。那么乱码便产生了。另外,在上Firefox (v1.0-en)下载也是乱码。
yadg 2009-03-04
  • 打赏
  • 举报
回复

file_name = "特价图书";
String filenamedisplay = file_name + ".xls";
filenamedisplay = URLEncoder.encode(filenamedisplay,
"UTF-8");
response.addHeader("Content-Disposition",
"attachment;filename=" + filenamedisplay);
内容概要:本文介绍了基于Matlab代码实现的电力系统机组组合优化调度方法,适用于IEEE14、IEEE30和IEEE118节点标准测试系统。该资源聚焦于电力系统中发电机组的优化调度问题,通过智能优化算法实现对机组启停、出力分配等决策的最优化,旨在降低运行成本、提升系统可靠性和经济性。文中系统阐述了从数学模型构建、多类型约束处理到优化算法设计与仿真实验验证的完整研究流程,并提供了可复现的Matlab代码,涵盖目标函数设定、约束条件建模及算法求解过程,适用于电力系统调度、能源优化等相关领域的科研与教学实践。; 适合人群:具备电力系统分析、运筹学基础及Matlab编程能力的高校学生、科研人员和工程技术人员,尤其适合从事电力系统优化、智能算法应用研究的研究生与青年学者。; 使用场景及目标:①用于电力系统机组组合(UC)问题的教学实验与课程设计;②支撑科研工作中对遗传算法、粒子群算法等智能优化算法在电力系统调度中应用的研究;③为含可再生能源接入的现代电网调度提供仿真平台与技术参考,助力低碳电力系统规划与运行。; 阅读建议:建议读者结合电力系统调度理论与优化建模知识,深入理解机组组合问题的数学本质与物理约束,再通过Matlab代码进行仿真实践,重点关注算法收敛性、多目标权衡策略与不同测试系统间的性能对比,以实现理论与实践的深度融合。

81,108

社区成员

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

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