JRException:1字节UTF-8序列的字节1无效

时间:2013-07-24 04:20:28

标签: java jasper-reports report

我正在尝试使用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

的Java代码
    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"

1 个答案:

答案 0 :(得分:1)

您在文件开头有 <?xml version="1.0" encoding="UTF-8"?>这一事实并不意味着该文件实际上是以UTF-8编码存储的,这只是意味着“我发誓此文件具有此编码”。

你的文件中是否有经典ASCII以外的字符? (类似于西班牙语N的波士顿吗?)

尝试使用合适的编辑器打开文件并再次保存,明确选择编码为UTF-8 AND 之后,查看文件中的特殊字符,看看它们是否仍然存在同样的。