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),有什么好的办法解决(文件名长度会被截断)的问题?
大家有什么好的解决方案吗?谢谢了。