質問: php(utf-8)を使ってmysqlで簡単なサイトを作ってみましたが, 日本語をフォームから入力して、表示するとき、ブラウザではまったく問題ないのですが、 phpMYadminでデータベースを開くとの日本語部分が文字化けして読めません。 ローカルでは問題ないので、サーバーの問題かとおもい、 他のサーバー(ロリポップ)にphpとsqlをテストでコピーしてみましたら大丈夫でした。 何かの設定かと思い、 mysql> SHOW VARIABLES LIKE 'char%';でチェックし比べてみたところ 正常(ローカル、ロリポップともに)のものは character set client utf8 character set connection utf8 character set database utf8 なのに 文字化けするほうは(北米のサーバー) character set client latin1 character set connection latin1 character set database latin1 でした。文字コードのデフォルトが違うからだと思い、ググって見たところ、 結構よくある問題で、my.cnf でデフォルト文字設定utf-8に変更するなどで解決できるとありました。 でも、使っているサーバーは予めphpMYadminがインストールされているレンタルサーバーであるのでmy.cnfはさわれないのでは??? サーバー会社に連絡して変更可能かと聞いたところ、my.cnfを変更することはできません。またデータベースのサポートはいたしません。と冷たく返答。サーバー会社を変えたいところですが、自分が借りたサーバーではないのでそのまま使うしかありません。 ただ、教わった、sqlコマンドからALTER DATABASE CHARACTER SET utf8 COLLATE utf8_general_ci を実行したところcharacter set databaseのみutf8になりました。(文字化けは一緒) character set connection とcharacter set database をmy.cnfをいじらず、sqlコマンドで変更可能なのでしょうか? もし、無理ならばどのような方法があるのでしょうか? サイトのフォームからの送信と受信はUTF-8に設定しています。 (だからだとおもいますが、ブラウザの表示だけは文字化けせずにでます。) お知恵がありましたらよろしくお願いします。
回答: 化けるのは、phpmyadminから表示したときだけで、そのサイトにおいたphpプログラムからは適切な設定でmysqlのデータを取得して化けずに表示できている(table自体に直接character set utf8設定がされている)ということであれば、phpmyadminのconfig.inc.phpでの設定が必要と思われますが、レンタルサーバーおしきせのphpmyadminでは、これの変更も難しいでしょう。 おしきせのphpmyadminじゃなく、自分で自分の領域内に、utf8対応にconfig.inc.phpを編集したphpmyadminを入れてしまう手もありますけど、10M近くは必要なのでサイト容量的にきびしいなら、サイトに見に来るお客さんにみせるページではないしと思って、あきらめるしかないかな?つまり、おしきせのphpmyadminからデータ入力はしないことにするということです。 databaseのcharacter set 設定は、今後新たにtable を作るときに character set 指定を付け忘れても、databaseに設定したcharacter set になるので、変更できたならそのまま utf8 にしておくのがよいです。