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服务器。


...全文
748 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用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);
jsp编程的一些小技巧总结,绝对实用。包括JSP编程常用的js技术。 1.JSP编程常用的js技术 2. 在下拉列表框里选择一个值后跳出新窗口? 3. 在JSP启动execl? 4. 两级下拉列表框联动菜单? 5. java如何把一个目录下的文件移到另一个指定的目录? 6. 制作表格线? 7. jsp如判别一个字符在A到Z之间? 8. 得到一浮点数小数点后4位,如何写以函数截取为两位 9. 整型转字符? 10. 显示数据库的记录,点击哪个标题栏,就按照哪个标题排序 11. 制作两个按钮 12. 用什么sql语句将数据库的一条记录,复制为两条? 13. 有兩個按鈕A,B,其A按下去,A就不可以再按,另外B按下去,A可以再按..請問如何用javascript控制.? 14. jsp的数据库的连接方式 15. 在jsp,怎么实现按回车就可提交表单? 16. 在JSP如何传递数组? 17. 按地址取图片? 18. JSP如何上传图片到数据库字段? 19. 页面自动刷新? 20. 表单自动提交? 21. 从JSP传数据的到JAVABEAN里? 22. weblogic 数据池连接? 数据源 JNDI名字 mysource 23. 三级下拉列表框联动菜单? 24. 在JSP如何调用浏览器的"另存为"功能? 25. 网页全屏显示 26. 求两个日期相隔了多少天:输入时间格式为(yyyy-mm-dd) 27. 上传文件对话框 28. 分页测试 29. 下载文件 30. 简单汉字判断 31. 将JSP的变量或者bean传递给JAVASCRIPT使用? 32. 把一种格式(如yyyy-mm-dd)的日期变量转换成另外一种格式(如dd-mm-yyyy)的日期变量! 33. 实现在页面上添加一行输入对话框 34. 制作验证码图片? 35. 图片缩小放大功能 36. 点击输入框弹出日期选择? 37. 在图片上传前查看自己要上传的图片? 38. 在图片排列的页面上选一个图片,然后把它删掉? 39. 显示某目录下的所有文件 40. 把复选框的值直接显示在输入文本框? 41. 选择路径下的文件直接显示文件内容? 42. 制作进度条? 43. 对较长字符省略显示? 44. 制作日历? 45. 点击文本弹出一个选择框,选值后返回并显示 46. 关闭框架页面回到没框架的页面? 47. 选多条记录一次性删除? 48. 自动获取页面文件名? 49. 在JSP调用ActiveX控件? 50. 使用SmartUpload实现文件上传? 51. 使用iReport和Jasperreport开发报表? 52. 使用iText生成PDF? 53. 制作图片水印? 54. 在页面屏蔽键盘功能键? 55. 禁止用户复制网页内容? 56. 实现不在地址拦显示当前URL? 57. 获取用户的真实IP地址? 58. 获取用户浏览器信息? 59. 获取当前绝对路径? 60. 将HTML文件转换成XML文件? 61. 结合XML和XSL输出HTML页面? 62. 制作动态树型菜单制作? 63. 制作类似QQ的短消息提示? 64. 用jfreechat制作拄、饼、曲线图型? 65. 文本框怎么只容许输入数字? 66. 打开Word和Execl文件? 67. 生成Word 和 Excel文档? 68. JSP如何读取Word内容? 69. 浏览服务器目录/文件? 70. jsp直接弹出下载下载文件? 71. 配置数据连接池和数据源(Tomcat)? 72. 点击图1变为图2? 73. JSP显示图片的方法之一? 74. int转为Integer的方法? 75. 请求jsp页面禁止缓存方法? 76. select选的值自动到一个文本框? 77. JSP连接数据库? 78. JSP两级下拉列表框联动(数据库)? 79. JSP字符编码问题及转换大全? 80. 使用过滤器设置请求编码? 81. JSP或Servlet调用DLL? 82. 在JSP包含Applet(时钟)? 83. 在Applet显示一个html页面? 84. 使session强制失效85. iFreme编辑框使用? 86. Applet与Servlet的通讯? 87. JSP表格直接导入EXCEL? 88. 访问类路径上的资源? 89. 操作文件目录? 90. 获取文件的属性? 91.如何开发并部署一个servlet 92.如何取得配置文件的servlet的参数 93.使servlet成为线程安全的 94.访问标准的CGI变量 95. servlet之间及与jsp间的通讯 96.获取当前绝对路径 97.在servlet操作cookie 98.使用servlet生成JPE

81,122

社区成员

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

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