0

我们使用JasperReports 4.6.0Java 1.6来生成PDF报告。对于带有英文文本的参数,它运行良好。如果我传递阿拉伯语输入参数,则输入参数像垃圾字符一样传递,因此我无法获取记录集。当我使用JasperReports 3.7.6Java 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();

你能告诉我如何解决这个问题吗?

4

2 回答 2

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");

我希望现在一切都会奏效。

于 2013-02-11T14:59:43.567 回答
2

最后,我找到了解决这个问题的方法。它是 Java 1.6 JVM 中的编码设置。我已经如下设置环境变量来解决问题

JAVA_TOOL_OPTIONS 到 -Dfile.encoding=UTF8

它解决了我的问题。输入是由 statck 溢出中的另一个论坛帖子给出的

https://stackoverflow.com/a/623036/770927

我感谢 Edward Grech,他在上面的帖子中解释了明显的原因和解决方案。

于 2013-02-12T05:19:58.750 回答