为什么要这么转?关于文件下载的文件名的(utf8、gbk、8859-1)。
有个字符转码的问题,想不明白,问问大家,
是关于从服务器下载文件内容和文件名的。
首先,已经通过
SetCharacterEncodingFilter
设置字符编码为utf8。
接着,
String fileName = request.getParameter("fileName");
这时,fileName取到的值为“测试文件名”,编码格式为utf8;
然后,进行转码(问题:为什么要从gbk转成8859_1,而不是从utf8转成8859_1?)
String strFileName = new String(fileName.getBytes("gbk"), "8859_1");
再设置文件下载的默认文件名
response.addHeader("Content-Disposition", "attachment;filename=" + strFileName);
(这时,在浏览器上提示保存文件的对话框上,显示的文件名是正常的,如果从utf8转的话,就显示不正常了,为什么?)
然后,再输出内容
response.getOutputStream().write(fileName.getBytes());
最终输出的文件的内容是以utf8格式保存的,并且显示正常。
我的操作系统是Win2k pro 简体
jdk 1.4
tomcat 5.0