プロが教える店舗&オフィスのセキュリティ対策術

プログラム初心者です。
PhpMyAdminでテーブルを作ってそこに接続するスクリプトを書くと
結果の日本語が文字化けしてしまい困っています。

SQLのコマンドラインツールからshow variables like 'char%';
で現在の文字コードに関する設定を確認してみたら

+--------------------------+--------------------------------+
| Variable_name | Value |
+--------------------------+--------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | C:\xampp\mysql\share\charsets\ |
+--------------------------+--------------------------------+

以上の様にcharacter_set_filesystem以外はUTF-8になっているのですが
なぜ文字化けしてしますのでしょうか?
このcharacter_set_filesystemをUTF-8にしないとそうなってしまうものなのでしょうか。
スクリプトはTerapadを使用しUTF-8で保存しています。

手持ちのPHPの参考書によると、文字化けの発生には以下の5箇所があるといいます。
1、HTTPリクエスト
2、PHPファイル内での文字列読み込み
3、DBアクセス
4、MysqlからApacheの問い合わせに対するレスポンス
5、HTTPレスポンス

現在この5つのうちのどこに原因があって文字化けしているのでしょうか?
3のDBアクセス時かな?と思って
参考書に従ってphp.iniや.htaccessを設定したつもりですが解消しません。
環境設定だけで一日仕事になってしまいました(汗)

お詳しい方、どうかお知恵をお貸し下さい。
原因と対策を教えて下さると助かります。
情報の過不足があればご指摘ください、よろしくお願いいたします。

当方の環境
 ■php 5.4.7
 ■mysql 5.0.10
 ■Apache 2.4.3

A 回答 (2件)

ANo.1 に追記です。

といっても『下記URLを参照してください』というだけですが(汗

http://oshiete.goo.ne.jp/qa/8036014.html
    • good
    • 0

>3のDBアクセス時かな?と思って



であれば「どうやって接続しているのか」(クライアントの文字セットをどうやってサーバに通知しているか)を提示してください。

MySQL関数であれば(いまどきネイティブなMySQL関数を使うとも思えませんが)mysql_set_charsetが抜けているとか、PDOなどであればdsnでcharsetを指定していないとかが思いつきますが、何も提示されていないので・・・
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
情報の不足があった事をお詫びいたします。

問題は解決いたしました。
原因はやはりDB側文字コードの設定でした。
サーバ接続の照合順序が、サーバ全体では『utf8_general_ci』となっていましたが
テーブルのカラム個々の設定は未設定だった為に起こっていた問題だったようで
ここを揃えたところきちんと表示されました。

お礼日時:2013/04/15 16:43

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!