2011年4月21日

[PHP-users 35550] Re:Jpgraphを使った日本語データの文字化け

こんばんは。豊丹生と申します。

最近ちょうどJpGraphをやっていたので、
同じ現象かと思いメールします。

全てにおいてそれぞれフォントが正しくセットされないと
日本語はUTF-8にしていても文字化けするようです。

タイトルの場合は
> $graph->title->SetFont(FF_GOTHIC,FS_NORMAL); // 日本語が出ました
ですが、

X軸のタイトルの場合は
$graph->xaxis->title->SetFont(FF_GOTHIC, FS_NORMAL, 10);

Y軸のタイトルの場合は
$graph->yaxis->title->SetFont(FF_GOTHIC, FS_NORMAL, 10);

凡例の場合は
$graph->legend->SetFont(FF_GOTHIC, FS_NORMAL);

などです。

違ってたらすみません。参考になれば幸いです。


> -----Original Message-----
> From: php-users-bounces@xxxxx
> [mailto:php-users-bounces@xxxxx] On Behalf Of ram
> Sent: Thursday, April 21, 2011 5:34 PM
> To: PHP-users ML
> Subject: [PHP-users 35547] Jpgraphを使った日本語データの文字化け
>
> こんにちは。
> WindowsServerからAS400への認証は、皆様にヒントを頂いたおかげでなん
> とかな
> りそうなので、
> 本題であるPHPでの作りこみにはいっています。
>
> サンプル等を参考にしながら、なんとかMysqlに接続して、JpGraphを使っ
> て
> グラフを出すところまでたどり着きました。
> サンプルに入っている groupbarex1.phpをそのまま使ってたので、
> セットする配列の値をmysqlでfetchした結果をセットするところを変更し
> ただけ
> なので、
> X軸要素以外は思うように表示されています。
>
> ここで判らないのが、日本語の文字化けです。
> php.iniの書き換えや、フォントの指定なので、タイトルは日本語に出すこ
> とが
> できましたが、
> $graph->title->Set('グラフを日本語化する');
> $graph->title->SetFont(FF_GOTHIC,FS_NORMAL); // 日本語が出ました
>
> X軸の要素となるMysqlから取得した日本語データがどうしても文字化けし
> てしま
> うのです。
> phpのソースもutf-8で保存してあります。
> mysqlのデータベースはutf-8で作成してあるため、そのまま表示できると
> 思った
> のですが、
> わざわざエンコードもしてみましたが結果は同じです。
> $jval=mb_convert_encoding($jval, 'UTF-8', 'auto');
>
> mysqlのほうのメーリングリストに出すべきなのかもしれませんが、
> 解決策もしくはヒントを頂ければありがたいです。
> よろしくお願い致します。
>
> 初穂太郎
>
> <?php
> require_once ('jpgraph/jpgraph.php');
> require_once ('jpgraph/jpgraph_bar.php');
>
> //配列 $dataxに mysqlで取得した日本語のX軸要素
> //配列 $datay1〜3に mysqlで取得した値が入っています
>  // sample groupbarex1.phpをそのまま使っているのでX軸要素以外はそ
> のまま
> 表示されています
>
> $graph = new Graph(450,400,'auto');
> $graph->SetScale("textlin");
> $graph->SetShadow();
> foreach( $datax as $jval ){
> $jval=mb_convert_encoding($jval, 'UTF-8', 'auto'); }
> $graph->xaxis->SetTickLabels($datax);
> $graph->xaxis->SetFont(FF_GOTHIC,FS_NORMAL); // 変更
>  $graph->title->Set('グラフを日本語化する');
>  $graph->title->SetFont(FF_GOTHIC,FS_NORMAL); // 日本語が出ました
>  $bplot1 = new BarPlot($datay1);
>  $bplot2 = new BarPlot($datay2);
>  $bplot3 = new BarPlot($datay3);
>  $bplot1->SetFillColor("orange");
>  $bplot2->SetFillColor("brown");
>  $bplot3->SetFillColor("darkgreen");
>  $bplot1->SetShadow();
>  $bplot2->SetShadow();
>  $bplot3->SetShadow();
>  $bplot1->SetShadow();
>  $bplot2->SetShadow();
>  $bplot3->SetShadow();
>  $gbarplot = new GroupBarPlot(array($bplot1,$bplot2,$bplot3));
>  $gbarplot->SetWidth(0.6);
>  $graph->Add($gbarplot);
>  $top = 80;
>  $bottom = 30;
>  $left = 50;
>  $right = 30;
>  $graph->Set90AndMargin($left,$right,$top,$bottom);
>  $graph->Stroke();
> ?>
>
> _______________________________________________
> PHP-users mailing list PHP-users@xxxxx
> http://ml.php.gr.jp/mailman/listinfo/php-users
> PHP初心者のためのページ - 質問する前にはこちらをお読みください
> http://oldwww.php.gr.jp/php/novice.php3


_______________________________________________
PHP-users mailing list PHP-users@xxxxx
http://ml.php.gr.jp/mailman/listinfo/php-users
PHP初心者のためのページ - 質問する前にはこちらをお読みください
http://oldwww.php.gr.jp/php/novice.php3


投稿者 xml-rpc : 2011年4月21日 20:04
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/103405
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。