2012年06月10日
このエントリーをはてなブックマークに追加
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に変換する方法。


stock_value at 19:16│Comments(0)TrackBack(0)技術:2012年 

トラックバックURL

この記事にコメントする

名前:
URL:
  情報を記憶: 評価: 顔