我正在尝试使用Jasper Reports生成报告,但我收到以下错误。
net.sf.jasperreports.engine.JRException:com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException:1字节UTF-8序列的字节1无效。
我正在使用这个Java代码:
List<Aluno> lista = alunoService.findAll();
String path = req.getSession().getServletContext().getRealPath("WEB-INF");
JasperReport report = JasperCompileManager.compileReport(path + "/relatorios/aluno.jasper");
JasperPrint print = JasperFillManager.fillReport(report, null, new JRBeanCollectionDataSource(lista));
JasperExportManager.exportReportToPdfFile(print, path + "/relatorios/teste.pdf");
尝试编译报告时出现错误:
JasperReport report = JasperCompileManager.compileReport(path + "/relatorios/aluno.jasper");
aluno.jrxml文件采用UTF-8 enconding:
<?xml version="1.0" encoding="UTF-8"?>
我已经研究过这个问题了,但是他们都说这是因为jrxml filw不是UTF-8 enconding。如果有人能帮助我,我真的很感谢。
使用aluno.jrxml
List<Aluno> lista = alunoService.findAll();
String path = req.getSession().getServletContext().getRealPath("WEB-INF");
JasperDesign design = JRXmlLoader.load(path + "/relatorios/aluno.jrxml");
JasperReport report = JasperCompileManager.compileReport(design);
JasperPrint print = JasperFillManager.fillReport(report, null, new JRBeanCollectionDataSource(lista));
JasperExportManager.exportReportToPdfFile(print, path + "/relatorios/teste.pdf"
答案 0 :(得分:1)
您在文件开头有 <?xml version="1.0" encoding="UTF-8"?>
这一事实并不意味着该文件实际上是以UTF-8编码存储的,这只是意味着“我发誓此文件具有此编码”。
你的文件中是否有经典ASCII以外的字符? (类似于西班牙语N的波士顿吗?)
尝试使用合适的编辑器打开文件并再次保存,明确选择编码为UTF-8 AND 之后,查看文件中的特殊字符,看看它们是否仍然存在同样的。