Параметр арабского ввода передавался как нежелательный вход 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();
Не могли бы вы посоветовать мне, как решить эту проблему?
Ответы
Ответ 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/...
Я благодарю Эдварда Греча, он объяснил очевидную причину и решение в вышеупомянутом сообщении.