« MT4.0を試してみる | メイン | 【あやろぐMT4.x移行】MT4.0再チャレンジ »

【あやろぐMT4.x移行】とりあえずUnicode化

前回、データベースをUnicode(UTF-8)化しないといけないことがわかり、
ずっと放置していたUnicode化の勉強をしてみました。

準備として、MT3.xのデータベース変換の際に、
BOT投稿の迷惑投稿データや ログデータ(投稿ログ、システムログ)が
残っていると、変な文字化けを起こして
うまくインポートできないことがあります。

まずは、作業前に、ログと迷惑投稿を
MTの管理画面で消しておくことをオススメします。

基本手順としては、以下の3手順。
1)いったん現在のデータベースをテキストにダンプ
2)ダンプデータを テキストエディタ(わたしはEmEditorを使用)でUTF-8に変換
3)新規のデータベースに、UTF-8に変換したダンプデータをインポート

簡単そうに見えますが、意外に落とし穴がいろいろあって大変でした。。

以下、備忘録に。

まず、MySQL4.1で旧来のデータベースを使っていると、
デフォルト設定では ダンプ時にUTF-8で無理矢理変換されて
文字化けしたダンプデータができあがります。

これではまったく使えないデータになるので、
ダンプ時は、旧コードのlatin1でダンプさせます。

/etc/my.cnf に下記を記述して、MySQLを再起動します。

[mysqldump]

default-character-set = latin1

そして既存データベース"movabledb"を、"movabledb.dump"へ
ダンプします。

mysqldump -u user -p movabledb > movabledb.dump

ダンプした"movabledb.dump"をエディタで確認して、
文字化けをしていないかを見ます。

次に、ダンプデータ上に
「/*!40101 SET NAMES latin1 */;」 などの『latin1 』の記述がある箇所があるので、
置換で『latin1 』を『utf8』に置き換えます。

問題がなさそうならば、エディタでUTF-8コードで
"movabledb-utf8.dump"として保存をかけます。


次にサーバ側をUTF-8化しておきます。
/etc/my.cnf に下記を記述します。

[mysqld]

default-character-set=utf8



#PHPでの文字化け回避:サーバーの文字コード設定をクライアントでもそのまま使う

skip-character-set-client-handshake



[mysql]

default-character-set = utf8



[mysqldump]

# latin1にしていた設定を直します

default-character-set = utf8


記述が終わったら、
MySQLを再起動し、
MySQLにログインしてMySQLのキャラクタコードを確認します。

mysql -u user -p
mysql> SHOW VARIABLES LIKE 'character_set%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/
| +--------------------------+----------------------------+

こうなっていればOK。


新規に殻のデータベース"movabledb-utf8"を作成して、
先ほどUTF-8化したダンプデータをインポートします。

mysql -u user -p movabledb-utf8 < movabledb-utf8.dump

特にエラーなく終了すれば、完了デス。
あとは、MT3.xのデータベース参照先をを、
mt-config.cgiをいじって "movabledb-utf8"に変えておきます。

"mt-config.cgi"の記述変更

ObjectDriver DBI::mysql

Database movabledb-utf8

DBUser user

DBPassword *******

DBHost localhost


MT3.xの管理画面から、サイトを構築して、
Unicode環境へ移行完了ヽ|・∀・|ノ

道のりは険しいですが、やってみるとちょっとした充実感、ありますね。
さて次はMT4環境移行をリベンジしてみよう~っと。

コメントを投稿


画像の中に見える文字を入力してください。

 
2008年12月
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      

管理者用

来訪者数
あやろぐ管理

Powered by Movable Type 4.23-ja
(c)2006 CrimsonIris. All Rights Reserved.