2007年2月25日日曜日

MysqlとPHPとUTF-8と・・・

いざ、移行を開始してみたらどうにも文字化けが直らない。
私は文字コード問題が苦手。しかし、そうもいってられないので調べて見た。
・mysqlとphpの文字コードが違えば文字化けする。
・mysqlでもクライアントとサーバーの文字コードが違えば文字化けすることがある。(自動変換機能によるもの。サーバーとクライアントの文字コードをそろえることによって自動変換いよる文字化けを抑制する)
・mysqlでクライアントをbinaryにすれば自動変換が無効になり格納文字コードで処理されるようになる。
・サーバーの文字コードを変更する場合は、変更前にDUMPし、変更後に戻してやる必要がある。
・文字コードの確認は
mysql > SHOW VARIABLES LIKE 'char%';
で確認できる。
# mysql -u root -p
Enter password: 
Welcome to the MySQL monitor. Commands end with ; or ¥g.
Your MySQL connection id is 2238 to server version: 4.1.20

Type 'help;' or '¥h' for help. Type '¥c' to clear the buffer.

mysql> SHOW VARIABLES LIKE 'char%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | ujis |
| character_set_connection | ujis |
| character_set_database | ujis |
| character_set_results | ujis |
| character_set_server | ujis |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
7 rows in set (0.00 sec)


うーん、ujis(EUC)だ。
こことここを見ながら設定を変更することにする。
ただ、問題になりそうなこともある。
Pleskは内部にphpを抱えているという記述を見たことがある。
そうなるとここでMysqlの設定を変更するとPleskのPHPと不整合を起こす可能性がある。
とおもったらPlesk用のphp.iniは初期設定そのまま。大丈夫かもしれない。

補足:
また途中でデータ喪失してたみたい・・・。寝ぼけながら作業しちゃダメね。
Pleskのデータはすべて書き出してみたけど決め打ちしてるみたいで変更するとエラーになった。
日本語データは扱わないだろうからそのままで影響ないだろうし、そのままにする。
障害が発生したらその時考えよう・・・。




0 件のコメント:

コメントを投稿

フォロワー

ブログ アーカイブ