为什么在使用easyExcel导出excel文件时文件名出现混乱?使用的浏览器是铬的。
输出文件名为%3F%3F%3F%3F%3F%3F%3F 2020-08-28 11_11_28.xlsx
public String encodeFileName(String userAgent, String fileName){
try{
fileName = StringUtils.contains(userAgent, "Mozilla") ? URLEncoder.encode(fileName, "ISO8859-1") : URLEncoder.encode(fileName, "UTF-8");
return fileName;
} catch (UnsupportedEncodingException e){
e.printStackTrace();
return fileName;
}
}
final String userAgent = request.getHeader("USER-AGENT");
String encodeFileName = encodeFileName(userAgent,"流程管理名单")+ DateUtil.getyyyyMMddHHmmss(new Date())+".xlsx";
response.setContentType("application/vnd.ms-excel");
response.setHeader("content-Disposition",
"attachment;filename=" + encodeFileName);
out = response.getOutputStream();发布于 2020-08-29 16:42:22
为什么在使用easyExcel导出excel文件时文件名出现混乱?
ISO8859-1不支持要编码的字符。
您可以简单地使用UTF-8对文件名进行编码。
public String encodeFileName(String userAgent, String fileName) {
fileName = URLEncoder.encode(fileName, StandardCharsets.UTF_8);
return fileName;
}或者,如果您使用Spring 5+,请使用ContentDisposition
String contentDisposition = ContentDisposition.builder("attachment")
.filename("流程管理名单.xlsx")
.build()
.toString();
response.setHeader("Content-Disposition", contentDisposition);也见
ContentDisposition使用的其他详细信息)https://stackoverflow.com/questions/63626964
复制相似问题