文件上传下载中遇到了中文名不显示的问题,因为Header中只支持ASCII,传输的文件名必须是ASCII。
filename = new String(filename .getBytes(), "ISO-8859-1");
//filename = URLEncoder.encode(file_name,"UTF-8");
response.setHeader("Content-Disposition", "attachment;filename=\"" + filename + "\"");
原因
ISO-8859-1编码是单字节编码,向下兼容ASCII,其编码范围是0x00-0xFF,0x00-0x7F之间完全和ASCII一致,0x80-0x9F之间是控制字符,0xA0-0xFF之间是文字符号。