[PHP-users 35551] タイトルでなくデータをMysqlから取得すると化けるようです

ram ram @ hatsuho.co.jp
2011年 4月 22日 (金) 09:03:58 JST


豊丹生さん コメント有難うございました。


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

ですが、これはX軸の見出しでリテラルで直接指定しており、正しく表示されて
います。

表示されないのは、X軸に出す値そのものです。
$graph->xaxis->SetFont(FF_GOTHIC,FS_NORMAL);
がそれに当るようなので、値を直接下記のように記述すると正しく日本語表示さ
れます。
(表示したいデータは半角+漢字なので同じ形にしてあります)
$datax=array("1月","2月","3月","4月","5月","6月","7月","8月","9月","10
月","11 月","12月");
$graph->xaxis->SetTickLabels($datax);
$graph->xaxis->SetFont(FF_GOTHIC,FS_NORMAL);

$dataxの部分をMysqlから取得した配列を使うと化けてしまう訳です。
ちなみに、配列の内容をダンプするため、スクリプトの先頭に
print_r($datax);
と入れると、正しく日本語表示されるので、データは格納されているようです。
foreach( $datax as $jval ){
$jval=mb_convert_encoding($jval, 'UTF-8', 'auto');
}
と強制的にutf-8にしても結果は同じでした。

棒グラフを横に回転させているので、その回転部分を外して通常の棒グラフにし
たり、
//$graph->Set90AndMargin($left,$right,$top,$bottom);
していますが、何が化けさせているのか、さっぱり判りません。

初穂 太郎

(2011/04/21 20:04), Michiyoshi Buniu(DreamLink) wrote:
> こんばんは。豊丹生と申します。
>
> 最近ちょうど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 @ php.gr.jp
>> [mailto:php-users-bounces @ php.gr.jp] 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 @ php.gr.jp
>> http://ml.php.gr.jp/mailman/listinfo/php-users
>> PHP初心者のためのページ - 質問する前にはこちらをお読みください
>> http://oldwww.php.gr.jp/php/novice.php3
>
> _______________________________________________
> PHP-users mailing list  PHP-users @ php.gr.jp
> http://ml.php.gr.jp/mailman/listinfo/php-users
> PHP初心者のためのページ - 質問する前にはこちらをお読みください
> http://oldwww.php.gr.jp/php/novice.php3
>



PHP-users メーリングリストの案内