首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么在使用easyExcel导出excel文件时文件名出现混乱?

为什么在使用easyExcel导出excel文件时文件名出现混乱?
EN

Stack Overflow用户
提问于 2020-08-28 03:17:55
回答 1查看 235关注 0票数 0

为什么在使用easyExcel导出excel文件时文件名出现混乱?使用的浏览器是铬的。

输出文件名为%3F%3F%3F%3F%3F%3F%3F 2020-08-28 11_11_28.xlsx

代码语言:javascript
复制
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();
EN

回答 1

Stack Overflow用户

发布于 2020-08-29 16:42:22

为什么在使用easyExcel导出excel文件时文件名出现混乱?

ISO8859-1不支持要编码的字符。

您可以简单地使用UTF-8对文件名进行编码。

代码语言:javascript
复制
public String encodeFileName(String userAgent, String fileName) {
    fileName = URLEncoder.encode(fileName, StandardCharsets.UTF_8);
    return fileName;
}

或者,如果您使用Spring 5+,请使用ContentDisposition

代码语言:javascript
复制
String contentDisposition = ContentDisposition.builder("attachment")
        .filename("流程管理名单.xlsx")
        .build()
        .toString();
response.setHeader("Content-Disposition", contentDisposition);

也见

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63626964

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档