出现乱码的原因
出现乱码的原因是因为各个浏览器编码格式不一样导致的。
注意:我们再写下载文件接口是多用几个接口测试一下
bug代码
//会出现乱码问题,因为没有适配到所有浏览器
response.setHeader("Content-Disposition", "attachment;filename="
+ new String(fileName.getBytes("utf-8"), "ISO8859-1"));
解决代码
//URLEncoder.encode(fileName,"UTF-8")能适配所有浏览器编码问题,具体的请查看源码
response.setHeader("Content-Disposition", "attachment;filename="
+ URLEncoder.encode(fileName,"UTF-8"));
完整的方法代码
public static void downloadExcel(String filepath,HttpServletResponse response)throws IOException{
File file = new File(filepath);
String fileName = file.getName();
//设置响应的文件格式为excel,编码格式
response.setContentType("application/vnd.ms-excel;charset=utf-8");
//URLEncoder.encode(fileName,"UTF-8")能适配所有浏览器编码问题,具体的请查看源码
response.setHeader("Content-Disposition", "attachment;filename="
+ URLEncoder.encode(fileName,"UTF-8"));
response.setCharacterEncoding("utf-8");
InputStream fis = new BufferedInputStream(new FileInputStream(file));
byte[] b = new byte[fis.available()];
fis.read(b);
response.getOutputStream().write(b);
fis.close();
if (file.exists()) {
file.delete();
}
}