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

ram ram @ hatsuho.co.jp
2011年 4月 21日 (木) 17:34:18 JST


こんにちは。
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 メーリングリストの案内