我们使用 JasperReports 4.6.0 和 Java 1.6 来生成 PDF 报告。它适用于带有英文文本的参数。如果我传递阿拉伯语输入参数输入参数 像一个垃圾字符一样传递,因此我无法获取记录集。当我使用 JasperReports 3.7.6 和 Java 1.5
时,同样的工作正常我的代码:
JasperPrint print = null;
Runtime run = null;
String strJasperFile = "E:/DailyWork/FEB-2013/report2.jasper";
String strOutputFile = "E:/DailyWork/FEB-2013/report2.xls";
String printtime="";
Connection con = getSqlConnection();
HashMap mpDetailSp = new HashMap();
mpDetailSp.put("parameter1", "B المهمات");
print = JasperFillManager.fillReport(strJasperFile, mpDetailSp, con);
JRExporter exporter = new JRXlsExporter();
exporter.setParameter(JRExporterParameter.JASPER_PRINT, print);
exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, strOutputFile);
exporter.exportReport();
你能告诉我如何解决这个问题吗?
答案 0 :(得分:2)
不是Jasper的专家我可以认为问题出在文本编码中。我进行了一次简短的搜索,找到了这个资源:http://www.adp-gmbh.ch/misc/tools/jasper/java.html
请查看模板示例,并注意文件顶部的<?xml version="1.0" encoding="UTF-8"?>
行。您的文件report2.jasper
是否包含此行?如果丢失,请检查并包含它。
另外添加行
exporter.setParameter(JRExporterParameter.CHARACTER_ENCODING, "UTF-8");
我希望现在一切都会奏效。
答案 1 :(得分:2)
最后,我找到了解决这个问题的方法。它是Java 1.6 JVM中的编码设置。我已经设置了如下的环境变量来解决问题
JAVA_TOOL_OPTIONS到-Dfile.encoding = UTF8
解决了我的问题。输入是由statck overflow
中的另一个论坛帖子给出的https://stackoverflow.com/a/623036/770927
我感谢Edward Grech,他在上面的帖子中解释了明显的理由和解决方案。