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;
    }