TOP  >  なーお'nぶろぐ  >  なーお  >  Web  >  [xoops] MySQLの「~」の文字化け解決

なーお さんの日記

タグ [d3diary] 
 
2011
4月 7
(木)
08:53
[xoops] MySQLの「~」の文字化け解決
本文

いやー、やっと解決しました。「~」→「?」になってしまう文字化け。 悩んでいたのは、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
CREATE TABLE `foo_bar_xxx` (
____ 中略
) ENGINE=MyISAM &font(Red){DEFAULT CHARSET=eucjpms};;

となってるテーブルが20個以上。 これら全てをエディタで編集。

1
2
3
CREATE TABLE `foo_bar_xxx` (
____ 中略
) ENGINE=MyISAM &font(green){DEFAULT CHARSET=utf8};;

そして、一旦サーバー上のこの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/ | 
+--------------------------+----------------------------+

めでたし、めでたし。
これを全稼働サイトに展開しないといけない。 ふう。

閲覧(30031)

新しくコメントをつける

題名
ゲスト名
投稿本文
より詳細なコメント入力フォームへ