web文件下载时文件名过长导致截断(字符编码问题:UTF-8,ISO8859-1)

庆浩 2008-12-25 01:45:03
原来问题:
web文件下载时文件名过长导致截断,原因:直接用URLEncoder.encode(fileName,"UTF-8"),得到的文件名长度会被截断。
代码:enFilename = URLEncoder.encode(filename, "UTF-8");
解决方法是:
文件名先用“GB2312”编码,然后用“ISO8859_1”解码。当然也可以在将文件名保存到数据库之前用“GB2312”编码。
代码:enFilename = new String(filename.getBytes(), "ISO8859-1");

现在的问题:
由于编码方式变了,当文件名含有特殊字符的时候,文件名会出错,例如:(测试#测试.txt → 测试_测试.txt)。

需要确认的内容:
编码方式改为"ISO8859-1"后,还有可能对那些字符不支持。和解决办法是什么?
如果编码方式不改(UTF-8),有什么好的办法解决(文件名长度会被截断)的问题?

大家有什么好的解决方案吗?谢谢了。
...全文
389 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
LX171717 2009-01-22
  • 打赏
  • 举报
回复

document.get
var aa
ffumax 2008-12-26
  • 打赏
  • 举报
回复
学习
lanzhengwu 2008-12-26
  • 打赏
  • 举报
回复
不是吧 ??
测试#测试.txt → 测试_测试.txt
你文件名这样写 ,也可能是不合法的 。因此才出问题。。
庆浩 2008-12-26
  • 打赏
  • 举报
回复
那你们公司最后怎么解决这个问题啊。就这样纳入了吗?
庆浩 2008-12-26
  • 打赏
  • 举报
回复
大家快来帮忙啊,一起把IE那个漏洞给解决掉

加油啊。
cupid198436 2008-12-26
  • 打赏
  • 举报
回复
恩,和你一样,等待更好的解决方案。
我在ajax中也遇到了类似的问题(需要先编码再解码)。

81,122

社区成员

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

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