みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

MYSQLでの文字化け

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 <your_database_name> CHARACTER SET utf8 COLLATE utf8_general_ci を実行したところcharacter set databaseのみutf8になりました。(文字化けは一緒)

character set connection とcharacter set database をmy.cnfをいじらず、sqlコマンドで変更可能なのでしょうか?
もし、無理ならばどのような方法があるのでしょうか?

サイトのフォームからの送信と受信はUTF-8に設定しています。
(だからだとおもいますが、ブラウザの表示だけは文字化けせずにでます。)

お知恵がありましたらよろしくお願いします。

投稿日時 - 2011-09-22 02:29:50

QNo.7026647

困ってます

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

化けるのは、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 にしておくのがよいです。

投稿日時 - 2011-09-27 22:33:26

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問