• ベストアンサー
  • 困ってます

MYSQLでの文字化け

  • 質問No.7026647
  • 閲覧数627
  • ありがとう数2
  • 気になる数0
  • 回答数1
  • コメント数0

お礼率 0% (0/1)

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に設定しています。
(だからだとおもいますが、ブラウザの表示だけは文字化けせずにでます。)

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

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

  • 回答No.1
  • ベストアンサー

ベストアンサー率 74% (170/228)

化けるのは、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 にしておくのがよいです。
結果を報告する
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,600万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A

その他の関連するQ&Aをキーワードで探す

ピックアップ

ページ先頭へ