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
まず上記環境内容で救出可能か不可能かだけでもご教授頂ければと思います。
また、もっと詳しく環境解れば回答できるよって場合は何を書いたら良いかお願いします。
データベースさえ正常に表示されれば手段や手順は問いません。
よろしくお願いします。
phpMyAdminでMySQLのデータを表示した時にだけ文字化けが発生するということであれば照合順序の設定を変えるだけで対応可能な話かもしれませんね
文字化けするテーブルをphpMyAdminで開いて、操作メニューのテーブルオプションにて、照合順序をutf8に変更してみてください
以上でうまくいけば良いのですが、論点自体がずれていたりするとこまごま話をしていかなければならなくなるかもしれませんので、
何かと不便な回答欄ではなく「コメント・トラックバックを表示する」にチェックを入れていただいて、以後コメント欄でのやりとりがよいでしょう
>別のサーバーに入れてインポートするとWEB上では文字化けしていない
別のサーバーに入れて問題がないのだとすればダンプしたファイルに問題があるのではなくて、
「エディタがUTF-8に対応していない」あるいは
「エディタの設定がUTF-8以外になっている」といったような話だと思われますので、
使用しているエディタについて確認してみてください
(コメント欄にダンプファイルの中身を覗くのに利用しているOSとエディタの名前を書き込んでもOKです。判ればコメントを返します)
また、phpMyAdminでテーブル内を見ると既に文字化けを起こしている状態で別のサーバーに入れてもWEB上では正常に表示されるのでなんとも不思議です。
質問ですが、CMS側でもデータベース内部は関係するのでしょうか?例えば、CMS側の.iniの設定がMySQLの文字化けを起こしているとか?
(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にした場合に表示される文字、他の照合にした場合などを比較することで確認できる場合もあります
年末年始モードに入りますので応答は悪くなります。取り急ぎ今後の足がかりを残していきます
http://www.artful.jp/blog/archives/2006/07/xamppmysqlphpmy.html
CMS側で自動調整が出来ないことが確認できただけでも確認作業が大幅に減るのでありがたいです。
早速上記を頼りに確認して行こうと思います。