- PR -

jfreeChartの文字化けについて

1
投稿者投稿内容
ハツキタツミ
大ベテラン
会議室デビュー日: 2005/05/24
投稿数: 108
投稿日時: 2005-05-24 11:23
こんにちは。

現在以下の環境でJFreeChartを使用して、グラフを作成しています。

OS:VineLinux 3.0
Java:J2SE 1.4.2

以下はグラフ作成時のコードです。

String[][] data = {
{"test1","100"},
{"test2","120"},
{"test3","130"},
{"test4","140"},
{"日本語は","140"},
};

DefaultPieDataset objPDS = new DefaultPieDataset();

for(int i = 0;i < data.length;i++) {
objPDS.setValue(data[i][0], Integer.parseInt(data[i][1]));
}

JFreeChart objChart = ChartFactory.createPieChart("テストチャートです", objPDS, true, false, false);

File file = new File("/usr/local/tomcat/webapps/test/piechart.png");

ChartUtilities.saveChartAsPNG(file, objChart, 600, 400);

グラフそのものは正しく作成されるのですが、グラフ中の日本語が文字化けしてしまいます。
(上記のコードで言えば、”テストチャートです”、”日本語は”等です)

Googleなどで調査し、以下のようなページを見つけましたが、問題解決には至っていません。
http://sakito.s2.xrea.com/moin/moin.cgi/JFreeChart

この現象について何かご存知の方、ご教示お願いいたします。
media
会議室デビュー日: 2003/04/10
投稿数: 7
投稿日時: 2005-05-26 11:18
参考になるかどうか分かりませんが、同じような状況にいるので、

こちらは、OSがFedoraCoreなんですが、

ラベルで使用するフォントの問題かと思われます。
ウチは、
JFreeChart.DEFAULT_TITLE_FONT
のフォントを指定していたのですが、その場合は日本語は全て□で表示されます。
JFreeChart.DEFAULT_TITLE_FONTはSansSerifフォントになるんですが、
これはjavaの論理フォントで、実際の物理フォントはOSに依存します。
そのフォントのマッピングにより日本語が表示されていないのでは?と思い、

JFreeChart.DEFAULT_TITLE_FONTでフォント指定するのではなく、
サーバ上で、fc-listコマンドで表示されたフォントを指定することで、日本語表示が
可能になりました。

はずしてたらごめんなさい。
ハツキタツミ
大ベテラン
会議室デビュー日: 2005/05/24
投稿数: 108
投稿日時: 2005-05-26 13:44
お世話になります。

チャートの出力前に以下の様にすることで、タイトルだけは日本語表示ができました。

Font font = new Font("Kochi Gothic", Font.BOLD, 15);
objChart.getTitle().setFont(font);

その他の項目(横軸、縦軸、凡例)も同様にsetFontすればよいかな?と考えたのですが、
setFontメソッドが見つけられず、現在調査中です...

このあたりの情報、ご存知ありませんか?
いっきゅう
大ベテラン
会議室デビュー日: 2004/04/04
投稿数: 153
お住まい・勤務地: 兵庫
投稿日時: 2005-05-26 14:08
私も以前Linuxで文字化けに悩まされた事がありました。
どんな対処したかは覚えていませんが
ここなんか参考になると思います。

がんばって見て下さい。
ハツキタツミ
大ベテラン
会議室デビュー日: 2005/05/24
投稿数: 108
投稿日時: 2005-05-26 15:37
お世話になります。

教えていただきましたページを参考に、当方の環境を調査しましたところ
font.propertiesの設定は

sansserif.0=-b&h-lucidasans-medium-r-normal-sans-*-%d-*-*-p-*-iso8859-1
sansserif.1=-wadalab-gothic-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0

と設定されていました。
恐らく、これが日本語表示できないフォントであると判断し、(この辺はまだ曖昧ですが...)
さらに調べてみると、こんなページを発見しました。
ここでの設定では、

sansserif.0=-b&h-lucidasans-medium-r-normal-sans-*-%d-*-*-p-*-iso8859-1
sansserif.1=-kochi-gothic-medium-r-normal--*-%d-*-*-c-*-jisx0201.1976-0
sansserif.2=-kochi-gothic-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0

となっていて、JFreeChartでデフォルトで使用するフォント(SansSerif)がKochi-gothicにマッピングされているようです。

この設定で再度チャートを出力したところ、setFontを使用せずとも、正しく日本語が表示されるようになりました。

お二人とも、ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)