服务器上的一个中文文件名的文件,我写了一个程序来下载: response.setHeader("Content-Disposition", "attachment; filename=" + toUtf8(fileName));
response.setContentType("application/octet-stream");
测试的时候,IE会弹出对话框并有三个按钮:“[打开]、[保存]、[取消]”。点保存的话,文件名没有任何问题,没有乱码。
如果点打开,则会说文件名不对,因为文件名全是%E4%8F...%6F.xls。
我感觉好像直接打开的话,文件名的utf-8编码没有转成合适的编码。
response.setContentType("application/octet-stream");
测试的时候,IE会弹出对话框并有三个按钮:“[打开]、[保存]、[取消]”。点保存的话,文件名没有任何问题,没有乱码。
如果点打开,则会说文件名不对,因为文件名全是%E4%8F...%6F.xls。
我感觉好像直接打开的话,文件名的utf-8编码没有转成合适的编码。
建议调试一下 filename 及 toUtf8(fileName) 的值.
特别是toUtf8函数的代码,可能对文件名加密了.
response.setHeader("Content-Disposition", "attachment; filename="
+ fileName);这么写头试试