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 に答える