なーお さんの日記
2011
4月
7
(木)
08:53
本文
いやー、やっと解決しました。「~」→「?」になってしまう文字化け。 悩んでいたのは、d3diaryとd3blogだけが文字化けするんで、何かコードに問題があるのかとずうっと追いかけたり、仮コードを仕込んでみたりしたものの解決せず。。
出張先から帰宅し、夜更かししつつ調べてみたら MySQLの文字コードの問題でした。
改善前のDB文字コード
mysql> SHOW VARIABLES LIKE 'char%'; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | ujis | | character_set_connection | ujis | | character_set_database | eucjpms | | character_set_filesystem | binary | | character_set_results | ujis | | character_set_server | ujis | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+
なぜこうなってしまったのか。。 おそらく、サーバーを更新する時にバックアップとして取得した時か、それを書き戻す際におかしくなってしまったのだと推測。
で、まずはこの状態でDBをテキストダンプしてみると、案の定、その
1 2 3 |
|
となってるテーブルが20個以上。 これら全てをエディタで編集。
1 2 3 |
|
そして、一旦サーバー上のこのDBをDROP(消去)し、新たに
DEFAULT CHARSET=utf8
としてDBを作りなおし、そこにテキストデータをリストアして治りました。
mysql> SHOW VARIABLES LIKE 'char%'; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | ujis | | character_set_connection | ujis | | character_set_database | ujis | | character_set_filesystem | binary | | character_set_results | ujis | | character_set_server | ujis | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+
めでたし、めでたし。
これを全稼働サイトに展開しないといけない。 ふう。
閲覧(30029)