MySQL上で文字化けを起こしていますがWEB上では正常に表示されています。phpMyAdminから閲覧する文字化けしていて読めません。

MySQL上のデータのみを文字化けから救う方法はありますか?どんな方法でも構いません。

◆環境
・Linux
・MySQL の文字セット: UTF-8 Unicode (utf8)
・Server : Apache/2.2.14
・MYSQL Version : 5.1.41
・SQL Mode : Not set
・PHP Version : 5.3.1

まず上記環境内容で救出可能か不可能かだけでもご教授頂ければと思います。
また、もっと詳しく環境解れば回答できるよって場合は何を書いたら良いかお願いします。
データベースさえ正常に表示されれば手段や手順は問いません。
よろしくお願いします。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2011/01/03 19:20:02
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:windofjuly No.1

回答回数2625ベストアンサー獲得回数1149

ポイント23pt

phpMyAdminでMySQLのデータを表示した時にだけ文字化けが発生するということであれば照合順序の設定を変えるだけで対応可能な話かもしれませんね

文字化けするテーブルをphpMyAdminで開いて、操作メニューのテーブルオプションにて、照合順序をutf8に変更してみてください

 

以上でうまくいけば良いのですが、論点自体がずれていたりするとこまごま話をしていかなければならなくなるかもしれませんので、

何かと不便な回答欄ではなく「コメント・トラックバックを表示する」にチェックを入れていただいて、以後コメント欄でのやりとりがよいでしょう

id:ryotys

早速試してみます。ほかにも文字化けなしでデータのみ救出する手段はないですかね?文字化けのDumpファイル・Sqlファイルを別のサーバーに入れてインポートするとWEB上では文字化けしていないのにMysqlのデータのみ文字化けしている状態です。

2010/12/28 10:35:12

その他の回答3件)

id:windofjuly No.1

回答回数2625ベストアンサー獲得回数1149ここでベストアンサー

ポイント23pt

phpMyAdminでMySQLのデータを表示した時にだけ文字化けが発生するということであれば照合順序の設定を変えるだけで対応可能な話かもしれませんね

文字化けするテーブルをphpMyAdminで開いて、操作メニューのテーブルオプションにて、照合順序をutf8に変更してみてください

 

以上でうまくいけば良いのですが、論点自体がずれていたりするとこまごま話をしていかなければならなくなるかもしれませんので、

何かと不便な回答欄ではなく「コメント・トラックバックを表示する」にチェックを入れていただいて、以後コメント欄でのやりとりがよいでしょう

id:ryotys

早速試してみます。ほかにも文字化けなしでデータのみ救出する手段はないですかね?文字化けのDumpファイル・Sqlファイルを別のサーバーに入れてインポートするとWEB上では文字化けしていないのにMysqlのデータのみ文字化けしている状態です。

2010/12/28 10:35:12
id:k-tan2 No.2

回答回数401ベストアンサー獲得回数48

ポイント23pt

phpMyAdminで、表示文字の設定をUTF-8にかえれば治ります。

MYSQLのDB自体は文字化けもしてませんし、問題ありません。

id:ryotys

同様に試してみます。

2010/12/28 10:35:33
id:ecdfdd No.3

回答回数15ベストアンサー獲得回数0

ポイント22pt

phpMyAdminでUTF-8に変えてみてはいかが?

id:hokke_mirin No.4

回答回数6ベストアンサー獲得回数0

ポイント22pt

私も以前仕事で同じような現象に悩まされた記憶があります。

Apacheのデフォルト文字コードをUTF-8にする。

PHPのconfファイルもUTF-8にする。

MySQLはphpMyAdmin上からではなく、my.cnfの設定を確認してください。

[mysqld]と[mysql]の項目に下記の記述

default-character-set = utf8

が、なければMySQL上では文字コードはlatin1で扱われているため2バイト文字は100%文字化けします。

データ(UTF-8)>PHP+Apache(UTF-8)>MySQL(latin1)

結果としてlatin1の文字コードに無理矢理UTF-8の文字列を突っ込んでいるので文字化けます。

最終的にはPHPのプログラムを先輩に組んでもらい無事データを救ったのですが、

残念ながらその資料を無くしてしまいました。

何かのお役に立てればと思い私の時の現象を書かせていただきました。

id:ryotys

さっそく、my.cnfを見ました。default-character-set = utf8 の記述はありませんでした。

この辺をもう少し調べてみます。ありがとうございます。

2011/01/01 12:41:34
  • id:windofjuly
    うぃんど 2010/12/28 11:06:00
    >文字化けのDumpファイル
    >別のサーバーに入れてインポートするとWEB上では文字化けしていない
     
    別のサーバーに入れて問題がないのだとすればダンプしたファイルに問題があるのではなくて、
    「エディタがUTF-8に対応していない」あるいは
    「エディタの設定がUTF-8以外になっている」といったような話だと思われますので、
    使用しているエディタについて確認してみてください
    (コメント欄にダンプファイルの中身を覗くのに利用しているOSとエディタの名前を書き込んでもOKです。判ればコメントを返します)
  • id:ryotys
    コメントありがとうございます。書き方が悪かったみたいですいません。エディタは秀丸を使っていてUTF-8でみても文字化けです。Shift-jisもEUC-JPも文字化けします。OSはWindows7-64bitになります。

    また、phpMyAdminでテーブル内を見ると既に文字化けを起こしている状態で別のサーバーに入れてもWEB上では正常に表示されるのでなんとも不思議です。

    質問ですが、CMS側でもデータベース内部は関係するのでしょうか?例えば、CMS側の.iniの設定がMySQLの文字化けを起こしているとか?
  • id:windofjuly
    うぃんど 2010/12/29 15:21:49
    推論の順序
    (1)MySQLのダンプは出来る限り同じ環境になっていないと失敗することが結構ある
    「問題のサーバー」と「別のサーバーに入れてインポート」は同じレンタルサーバー会社のものだと考えたりします
    逆に、同じ環境であるならば失敗することも無いという考え方にもなります
    (2)インタフェース部分との不整合の可能性が一番高い
    データに問題が無いという仮定に基づき、まずはphpMyAdminの設定変更を回答しています
    (3)php.iniとmy.confの設定確認
    CMS側で自動調整などはまずできないので、2つの設定を比較することでおおよそつかめるはずです
    php.iniは直接覗いてみても良いですがphpinfo();で出力したほうが見やすいでしょう
    my.confもSQLコマンド(SHOW VARIABLES LIKE 'character_set%';)で出力したほうが見やすいでしょう
    よくあることとしてはMySQL内部のキャラクタセットと、MySQLが外部とやり取りする際のキャラクタセットが実は違うという事があったりします
    つまりは「UTF-8のつもりでいたのに、外部にはSJISで返信を返してきている」などです
    これについては(2)でWebで表示される文字と、phpMyAdminの照合順序をUTF8にした場合に表示される文字、他の照合にした場合などを比較することで確認できる場合もあります
     
    年末年始モードに入りますので応答は悪くなります。取り急ぎ今後の足がかりを残していきます
  • id:k-tan2
    http://www.artful.jp/blog/archives/2007/05/xamppphpmyadmin.html
    http://www.artful.jp/blog/archives/2006/07/xamppmysqlphpmy.html

  • id:ryotys
    コメント及び参考URL ありがとう御座います。
    CMS側で自動調整が出来ないことが確認できただけでも確認作業が大幅に減るのでありがたいです。
    早速上記を頼りに確認して行こうと思います。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません