Java JasperReports API:调用JasperCompileManager.compileReport(字符串)方法引发了MalformedByteSequenceException异常
上面是我的剧本 这是我的错误:Java JasperReports API:调用JasperCompileManager.compileReport(字符串)方法引发了MalformedByteSequenceException异常,java,jasper-reports,Java,Jasper Reports,上面是我的剧本 这是我的错误: public void openReport() { try { HashMap params = new HashMap(); params.put("aapor", 19); JasperReport jasperReport1 = JasperCompileManager.compileReport("C:/Users/emidemi.emidemi-PC/Documents/NetBeansPro
public void openReport() {
try {
HashMap params = new HashMap();
params.put("aapor", 19);
JasperReport jasperReport1 = JasperCompileManager.compileReport("C:/Users/emidemi.emidemi-PC/Documents/NetBeansProjects/FleetManager/src/FleetManager/newReport5.jasper");
JasperPrint jasperPrint1 = JasperFillManager.fillReport(jasperReport1, params, conn.getConn());
JRViewer viewer = new JRViewer(jasperPrint1);
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
有人知道为什么会发生这种情况以及如何解决吗?这是字符编码的问题。您是否尝试过更改报告开头的编码行 i、 e.对于中欧字母表,更改:
com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: Invalid byte 1 of 1-byte UTF-8 sequence.
BUILD SUCCESSFUL (total time: 7 seconds)
借
这里列出了不同的字符编码标准:
希望它能工作此异常何时发生(编译还是执行?)。通常,这个问题意味着您的输入不是UTF-8 如果您完全确定它应该是UTF-8,请尝试以下方法: 1.创建一个新的空文件并将其编码为UTF-8。 2.将整个文本从旧文件复制到新文件。 3.保存新文件并检查它是否与新文件一起工作。如果是,则旧文件不是正确的UTF-8。 4.如果没有,请发布您的输入文件(jrxml)
当我遇到这样的问题时,我会尝试查找有问题的字符,十六进制编辑器会提供帮助。您正在尝试编译一个已经编译过的jasper文件。用newReport5.jrxml替换newReport5.jasper 如果要直接使用jasper文件,必须执行以下操作:
<?xml version="1.0" encoding="CP1250"?>
<?xml version="1.0" encoding="CP1250"?>
JasperReport jasperReport = (JasperReport)JRLoader.loadObject(new File("filename.jasper"));