Подтвердить что ты не робот

Параметр арабского ввода передавался как нежелательный вход JasperReports

Мы использовали 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();

Не могли бы вы посоветовать мне, как решить эту проблему?

4b9b3361

Ответ 1

Не будучи экспертом в 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");

Надеюсь, теперь все будет работать.

Ответ 2

Наконец, я нашел решение этой проблемы. Это была настройка кодирования в JVM Java 1.6. Я установил переменную окружения, как показано ниже, чтобы решить проблему

JAVA_TOOL_OPTIONS для -Dfile.encoding = UTF8

Была решена моя проблема. Вход был предоставлен другим сообщением форума в переполнении statck

fooobar.com/info/21724/...

Я благодарю Эдварда Греча, он объяснил очевидную причину и решение в вышеупомянутом сообщении.