• ベストアンサー

PHP+MySQLの文字化けで悩んでいます

お世話になります。 Windows Server2003で、XAMPPでPHP+MySQLを利用しようとしていますが 文字化けが解消されず困っています。どなたか、お助けいただけないでしょうか。 他では成功していたSJISを使おうと思っていますがうまくいきません。 my.cnfでの[mysqld]や[mysql]などの設定、およびphp.iniのmbstringなどの設定は、 今まで成功していたWindowsやLinuxと同様に行いました。 PHPによる単純な日本語表示もMySQLモニタ上の日本語は問題ありません。 しかし、MySQLからの結果セットを受け取ると文字化けしてしまいます。 たとえば、 $re=mysql_query("SELECT * FROM tb"); while($kekka=mysql_fetch_array($re)){ print $kekka[0]; } などを実行すると「:?w?Z?カ??:」などの表示になってしまいます。 また、PHPからMySQLでINSERTすると、MySQLでも文字化けしてしまいます。 MySQLモニタで「SHOW VARIABLES LIKE 'char%';」を実行すると次のように表示されます。 character_set_client | sjis character_set_connection | sjis character_set_database | sjis character_set_filesystem | binary character_set_results | sjis character_set_server | sjis character_set_system | utf8 知識がなく、悩んでおります。 まことに申し訳ありませんが、どなたかお助けいただけないでしょうか。 どうか、よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

MySQLのバージョンは、何でしょうか? MySQL 5.0.13以降なら、以下の指定を入れて、MySQLのサービスを再起動してみてください。 my.cnfの[mysqld]に、 skip-character-set-client-handshake 意味としては、サーバ側の文字コードの設定を、クライアント側でもそのまま使う指定です。

kiyonisi
質問者

お礼

はい、XAMPP独自のmy.cnfの設定のようでした。 my.iniがないので、無理やり自分で作成したものに [mysql]の設定をしたのですが、これはまったく無視されていたようです。 申し訳ありませんでした。 以前も、お助けいただきまして、感謝しております。 また、ご迷惑をおかけしたことをお詫びいたします。 本当にありがとうございました。

その他の回答 (2)

  • maguro999
  • ベストアンサー率21% (59/273)
回答No.3

SET NAMES 文字コード を利用する。

kiyonisi
質問者

お礼

申し訳ありませんでした。 [mysql]の設定が無視されていたようです。 ご迷惑をおかけして申し訳ありませんでした。 ご親切に感謝いたします。ありがとうございました。

回答No.1

charsetは出力していますか? <?php header('Content-Type: text/html; charset=Shift_JIS'); ?> ... <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> ちなみにこの答え書くの3回目。

kiyonisi
質問者

お礼

申し訳ありませんでした。 付けていませんでした。 また、my.iniがないので、無理やり自分で作成したものに [mysql]の設定をしたのですが、これはまったく無視されていたようです。 ご迷惑をおかけして申し訳ありませんでした。 そして、ご親切に感謝いたします。 ありがとうございました。

関連するQ&A