• 締切済み

文字コードを揃えているはずなのに文字化け?

プログラム初心者です。 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

みんなの回答

  • agunuz
  • ベストアンサー率65% (288/438)
回答No.2

ANo.1 に追記です。といっても『下記URLを参照してください』というだけですが(汗 http://okwave.jp/qa/q8036014.html

すると、全ての回答が全文表示されます。
  • agunuz
  • ベストアンサー率65% (288/438)
回答No.1

>3のDBアクセス時かな?と思って であれば「どうやって接続しているのか」(クライアントの文字セットをどうやってサーバに通知しているか)を提示してください。 MySQL関数であれば(いまどきネイティブなMySQL関数を使うとも思えませんが)mysql_set_charsetが抜けているとか、PDOなどであればdsnでcharsetを指定していないとかが思いつきますが、何も提示されていないので・・・

chacky0225
質問者

お礼

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

すると、全ての回答が全文表示されます。