1

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

<?xml version="1.0" encoding="UTF-8"?>

我研究过这个问题,但他们都说原因是因为 jrxml 文件不是 UTF-8 编码的。如果有人可以帮助我,我真的很感谢。

Java代码使用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"
4

1 回答 1

1

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

您的文件中是否有经典 ASCII 以外的字符?(类似于带有波浪线的西班牙语 N?)

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

于 2013-07-24T04:28:44.327 回答