2012年06月10日
Tweet
mysql + Movable Type 4 の環境で、サーバーをリプレースしました。すると新しい環境では記事などが文字化けしてしまうのです。
mysqldump や バックアップ→復元など色々やりましたがどれもだめ。途方に暮れてしまいました。
が、なんとかなったのでメモ。
既存の環境は以下の通り
mysql 4.1
新しい環境は以下の通り
mysql 5.0
※MT は変化無し。
そもそもの原因は旧サーバーでは文字コードが、 latin1 となっていたこと。
--------------
# mysql -u dbuser -p DB_NAME
mysql> status
Server characterset: latin1
Db characterset: latin1
Client characterset: latin1
Conn. characterset: latin1
--------------
※ちなみにDBなどを utf8 に変更しても、table の文字コードが違っていたりすると結局 latin になってしまう場合もあるようです。
■参考
MySQLのデータベース移行 latin1からutf8へ
上記の通り作業します。以下引用しつつ。
> テーブルの文字コードがlatin1でUTF-8のデータが入っているケース
おそらく僕のケースは、上記のパターンっぽかったです。
> ・latin1からutf8へ
$ mysqldump -u dbuser -p --default-character-set=latin1 DB_NAME > DB_NAME.sql
上記ファイルで、 latin1 を utf8 に書き換えます。
sed -e s/latin1/utf8/ DB_NAME.sql > DB_NAME.utf8.sql
このファイルを、新しいサーバーでインポートしました。
ちなみに新しいサーバーの文字コードは以下の通りです。
mysql> status
--------------
Server characterset: utf8
Db characterset: utf8
Client characterset: utf8
Conn. characterset: utf8
--------------
結構解決までに時間がかかってしまいどきどきしました。
※nkf で変換しなければならない場合もあるようです。僕の環境ではだめでした。
MySQLに既に存在するデータベース内部の文字コードを、latin1からutf8に変換する方法。
mysqldump や バックアップ→復元など色々やりましたがどれもだめ。途方に暮れてしまいました。
が、なんとかなったのでメモ。
既存の環境は以下の通り
mysql 4.1
新しい環境は以下の通り
mysql 5.0
※MT は変化無し。
そもそもの原因は旧サーバーでは文字コードが、 latin1 となっていたこと。
--------------
# mysql -u dbuser -p DB_NAME
mysql> status
Server characterset: latin1
Db characterset: latin1
Client characterset: latin1
Conn. characterset: latin1
--------------
※ちなみにDBなどを utf8 に変更しても、table の文字コードが違っていたりすると結局 latin になってしまう場合もあるようです。
■参考
MySQLのデータベース移行 latin1からutf8へ
上記の通り作業します。以下引用しつつ。
> テーブルの文字コードがlatin1でUTF-8のデータが入っているケース
おそらく僕のケースは、上記のパターンっぽかったです。
> ・latin1からutf8へ
$ mysqldump -u dbuser -p --default-character-set=latin1 DB_NAME > DB_NAME.sql
上記ファイルで、 latin1 を utf8 に書き換えます。
sed -e s/latin1/utf8/ DB_NAME.sql > DB_NAME.utf8.sql
このファイルを、新しいサーバーでインポートしました。
ちなみに新しいサーバーの文字コードは以下の通りです。
mysql> status
--------------
Server characterset: utf8
Db characterset: utf8
Client characterset: utf8
Conn. characterset: utf8
--------------
結構解決までに時間がかかってしまいどきどきしました。
※nkf で変換しなければならない場合もあるようです。僕の環境ではだめでした。
MySQLに既に存在するデータベース内部の文字コードを、latin1からutf8に変換する方法。