java - JR异常 : Invalid byte 1 of 1-byte UTF-8 sequence

标签 java jasper-reports report

我尝试使用 Jasper Reports 生成报告,但收到以下错误。

net.sf.jasperreports.engine.JRException: com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: Invalid byte 1 of 1-byte UTF-8 sequence.

我正在使用这个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 filw不是UTF-8编码。如果有人能帮助我,我真的很感谢。

使用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"

最佳答案

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

您的文件中是否还有经典 ASCII 以外的字符? (类似于西类牙语中的 N,上面有波浪号?)

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

关于java - JR异常 : Invalid byte 1 of 1-byte UTF-8 sequence,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17825148/

相关文章:

MYSQL SUM() 总分

java - 如何使用java使jasper报表中的数据像列表一样显示?

jasper-reports - 我应该为 Letter、Legal 和 A4 使用什么数字?

java - Maven 报告中的 JUnit 输出

java - 当您无法控制第二次读取 ServletInputStream 的代码时,如何多次读取它

java - 通过监听器或 Web 服务传递数据的正确机制是什么

sql - 将单个查询结果添加到JMeter报告中

layout - Crystal 报表布局

java - Java中n个子数组的取值组合

java - Activity 更改时 Android 微调器不保留值(与生命周期相关)