我使用Servlet + JasperReport生成一个带有可变文件名的pdf文件。但是,如果变量fileName
(第6行)包含非英文字符,则文件名无法正确显示。
我将文件设为---.pdf
或--english--or--number--.pdf
。
这是我的代码:
byte[] pdf = JasperRunManager.runExportToPdf(report, params, datasource);
FacesContext context = FacesContext.getCurrentInstance();
HttpServletResponse response = (HttpServletResponse) context.getExternalContext().getResponse();
response.setContentType("application/pdf");
response.setCharacterEncoding("UTF-8");
response.setHeader("Content-disposition", "attachment; filename=\"" + fileName + ".pdf\"");
ServletOutputStream sos = responser.getOutputStream();
sos.write(pdf);
sos.flush();
sos.close();
context.responseComplete();
我做了很多搜索,但找不到正确显示非英文字符的解决方案。这似乎有点愚蠢而且很容易做,但我想要你的回答。谢谢。
环境:debian(测试不稳定)+ jsf ++ maven + spring + hibernate + java7。