浏览 2235 次
|
锁定老贴子 主题:中文文件名附件下载引至的疑问...
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
最后更新时间:2006-07-18
最近做附件下载功能,当然少不了遇到中文乱码的问题。
在get方式传递文件名(带中文的) 现时唯一通过的方法是: 1.在链接中用java.net.URLEncoder.encode对文件名进行编码 2.在JSP或servlet中进行转码(ISO->UTF) 3.在设定response的Header时,要去文件名进行编码(UTF->ISO) 但这方法必须在JSP中写encode的代码,对于用标签做JSP页面时,极不方便。 而另一种似乎可行的方式,却有不解问题,情况如下: 链接页面 [code:1]<%@ page contentType="text/html; charset=UTF-8"%> <%@ page language="java" pageEncoding="UTF-8"%> <a href="download.jsp?file_name=测试标.jgp">下载链接</a>[/code:1] 下载页面 [code:1]<%@ page contentType="text/html; charset=UTF-8"%> <%@ page language="java" pageEncoding="UTF-8"%> <% out.println("file_name==" + new String(res.getBytes("ISO-8859-1"),"UTF-8") + "<br>"); //...省略部分代码 %>[/code:1] 当我在下载页面接收参数file_name时,做转码后发现,中文文件名为偶数时没有问题,为奇数时,最后一个字变成了问号。 请问大家可有遇过这问题?如何解决的?请不惜指教,TKS![/code] 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
最后更新时间:2006-07-18
知道tomcat可以设置urlEncode="UTF-8",不知道搂主用的什么服务器,应该可以设置的。
|
|
| 返回顶楼 | |
|
最后更新时间:2006-07-18
LuckyFox 写道 知道tomcat可以设置urlEncode="UTF-8",不知道搂主用的什么服务器,应该可以设置的。
感谢你的回复! 我用的就是TOMCAT,你说的参数名应该是URIEncoding,我设过UTF-8和GBK但仍然是有这个问题。 不知我是否还有什么遗漏的地方。 |
|
| 返回顶楼 | |
|
最后更新时间:2006-07-19
继续等待正确答案
|
|
| 返回顶楼 | |
|
最后更新时间:2006-07-19
附件下载
response.setContentType("application/octet-stream; CHARSET=utf8"); 文件名的设置 response.setHeader("Content-Disposition","attachment; filename="+URLEncoder.encode(fileName,"UTF-8")); |
|
| 返回顶楼 | |
|
最后更新时间:2006-07-19
ylt 写道 附件下载
response.setContentType("application/octet-stream; CHARSET=utf8"); 文件名的设置 response.setHeader("Content-Disposition","attachment; filename="+URLEncoder.encode(fileName,"UTF-8")); 谢谢你的回复,我的设定是: response.setContentType("application/x-msdownload"); response.addHeader("Content-Disposition", "attachment; filename=\""+ new String(attch_name.getBytes("GBK"),"ISO-8859-1") + "\""); 测试也通过。 不知你说的application/octet-stream和我设的application/x-msdownload有没有什么不同。URLEncoder.encode(fileName,"UTF-8")可以理解。 另我的疑问还没到这步,问题是为什么我传过去的中文文件名,一获得时就有奇数乱码问题? 有谁有空帮我按上面提出的JSP代码试一下吗 |
|
| 返回顶楼 | |







