csv导出文件名乱码解决

    public void exportCsv(ExamineDTO examineDTO, HttpServletRequest request, HttpServletResponse response) throws ServiceException {
        try {
            // 文件名
            String fileName = "报表导出_" + System.currentTimeMillis() + ".csv";
            String excelName = excelName(fileName, request);
            response.setContentType("application/octet-stream;charset=ISO8859-1");
            response.setHeader("Content-Disposition", "attachment;filename=" + excelName);
            response.addHeader("Pargam", "no-cache");
            response.addHeader("Cache-Control", "no-cache");

            // 查询具体数据
            List<String[]> list = this.examineDao.queryExamineCsvReportList(examineDTO);
            CSVUtil.write(response, list);

        } catch (ServiceException e) {
            logger.error("报表数据导出异常,异常信息为:{}", e.getMessage(), e);
            throw new ServiceException("报表数据导出异常", e.getMessage(), e);
        }

    }
    private String excelName(String name, HttpServletRequest request) throws ServiceException {
        String userAgent = request.getHeader("USER-AGENT");
        String ie = "MSIE";
        String ie11 = "like Gecko";
        String mozilla = "Mozilla";
        String excelName = CommonDTO.EMPTY_STRING;
        try {
            // IE浏览器
            if (userAgent.contains(ie) || userAgent.contains(ie11)) {
                excelName = URLEncoder.encode(name, "UTF8");
                // google,火狐浏览器
            } else if (userAgent.contains(mozilla)) {
                excelName = new String(name.getBytes(), "ISO8859-1");
                // 其他浏览器
            } else {
                excelName = URLEncoder.encode(name, "UTF8");
            }
        } catch (Exception e) {
            logger.error("csv文件名编码转换异常,异常信息为:{}", e.getMessage());
            throw new ServiceException("先审后发报表数据导出异常", e.getMessage(), e);
        }
        return excelName;
    }
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值