在使用Java开发文件上传下载的功能过程中,经常会遇到了中文名不显示的问题,原因是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之间是文字符号。