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 に答える