• ベストアンサー

日本語をinsert時に文字化け

xamppをインストールしMySQLを使おうとしたのですが、日本語をinsertしようとすると?で格納されてしまいます。 my.iniの設定を以下のように変えてみましたがうまくいきません。 [client] # 追加 default-character-set = utf8 [mysqldump] # 追加 default-character-set=utf8 [mysqld] # 追加 skip-character-set-client-handshake default-character-set = utf8 character-set-server = utf8 collation-server = utf8_general_ci init-connect = SET NAMES utf8 [mysql] # 追加 default-character-set=utf8 STATUS;コマンドで確認すると Client characterset: utf8 Server characterset: utf8 とってなっており、SHOW VARIABLES LIKE 'char%';を実行してもcharacter_set_filesystem以外はutf8になっています。 xampp等のバージョンは以下の通りです。 xampp 1.7.2 MySQL 5.1.37 PHPからのクエリ発行、phpmyadminというツールからのクエリ発行どちらも?で格納されてしまいます。 もうどこが問題なのか見当が付きません。 よろしくお願いします。

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

  • ベストアンサー
  • hrm_mmm
  • ベストアンサー率63% (292/459)
回答No.3

windows のphp + MySQL4.1以降の場合、接続したら set names utf8 を実行するのは、ほとんどお約束みたいなものなのですが、やってますか? my.iniのclient設定は、phpのlibmysql.dllは対象外ですので。 http://www.mysql.gr.jp/frame/modules/bwiki/?FAQ#content_1_44 phpmyadmin は私は使ったことがないけど、これを実行させるように設定が必要と思われます。

shaka001
質問者

お礼

お礼が遅くなってしまい申し訳ございません。 php、phpmyadminともに文字コードの設定をutf-8に変更してはあるのですが、文字化けが起こります。 テーブル作成時に最初から文字コードがutf-8で作ったら文字化けしないようになりました。 どうも、あとから文字コードを変えてみてもダメということみたいです。

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

その他の回答 (2)

回答No.2

文字化けが発生する環境で、文字コードを確認してますか? >my.iniの設定を以下のように変えてみました xamppで使っているMySQLが参照している設定ファイルであると、確認できていますか? >PHPからのクエリ発行、phpmyadminというツールからのクエリ発行どちらも?で格納されてしまい 実際に文字化けが起こっているというphpMyAdminで、 show variables like 'char%' を表示させてみましたか? show create tableで、表定義で実際に有効になっている文字コードを確認してみてください。

shaka001
質問者

お礼

お礼が遅くなってしまい申し訳ございません。 >xamppで使っているMySQLが参照している設定ファイルであると、確認できていますか? 変更後のmy.iniを削除したらcharset~がlatin1に戻っていたのでおそらく間違いないと思われます。 >実際に文字化けが起こっているというphpMyAdminで、show variables like 'char%'を表示させてみましたか? character_set_filesystem以外はutf8になっていました。 テーブル作成時に最初から文字コードがutf-8で作ったら文字化けしないようになりました。 どうも、あとから文字コードを変えてみてもダメということみたいです。

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

確か、データベースの文字コードと、テーブルの文字コードの2つがあったと思います。これらの文字コードはそれぞれ作成時に設定されます。 データベース、テーブルそれぞれで文字コードを指定して作成して試してみてはいかがでしょう?(設定ファイルの文字コード指定は、多分生成時しか参照しないと思いますので、生成後に変更しても無意味です。)

shaka001
質問者

お礼

お礼が遅くなってしまい申し訳ございません。 データベースやテーブル作成時に文字コードを指定してなかったので、latin1になっていました。 なので、あとからphpmyadmin上やalter database DB名/テーブル名 character set utf8 を発行したりしてutf-8に変えた状態でした。 そこで、テーブル作成時に最初から文字コードがutf-8で作ったら文字化けしないようになりました。 どうも、あとから文字コードを変えてみてもダメということみたいです。

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