阿拉伯语输入参数像垃圾输入JasperReports一样传递

时间:2013-02-11 14:35:47

标签: java jasper-reports

我们使用 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();

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

2 个答案:

答案 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,他在上面的帖子中解释了明显的理由和解决方案。