MySQLのデータをセーブする方法、いろいろあるのかもしれませんが、
mysqldumpというコマンドを使って、テーブルのCREATE文やINSERT文を作成する方法をとることにしました。
mysqldump データベース名 > 出力先SQLファイル名 --password=パスワード
これだけです。
&mysqldump kiyo >kiyo.sql --password=*****
とてもカンタン:ー)。
出力されたSQL文をnkfでEUCコードにコンバートして、別データベースでSQLを実行してみたら、あっけないほど簡単にでEUCコードでのデータベースはできがってしまいました。
$ nkf -e kiyo.sql >kiyo.euc.sql $mysql -ukiyo -p kiyo_euc < kiyo.euc.sql
ためしに、検索してみました。
エントリーのタイトルを検索したところ、きちんと表示されました。
MySQLの環境がEUCですので、内容もEUCに変換されたということです。
でも、その先でちょっと戸惑ってしまったのです。
私は、ただ単にmt.cfgのPublishCharsetの部分を変更すればOKと思っていたのですが、ログイン画面のところでエラーがでてきてしまって...
それで、ツールを使えばいいのかな?なんて思ってしまいました。
心機一転、tugaaさんに教えていただいた、Movable Type の文字コード変換スクリプトを利用してみることにしたのです。
これは、解凍したものを設置して、ただ実行するだけのとても簡単なものでした。
バックアップは注意書きにもあるので実行前に取りました。
データベースのバックアップは先ほどのmysqldmpで取ったファイル。
また、サイト全体のバックアップを取っておきました。
ダウンロードしたmt-convert-code.tar.gzを解凍すると、mt-convert-code.cgiというファイルがひとつだけできました。
これを実行すると、下記のように表示されますので、変換前のコードと、変換後のコードを指定します。

そして、Convertボタンを押すだけです...。

こうやって画面が出て...
コンテンツが少ないせいもあり、あっという間に完了してしまいました。
さて、気を取り直して、管理画面にログイン....
っと思ったら、先ほどと変わらないエラーが....(笑)
よく読んでみれば、Movable Type の文字コード変換スクリプトツールって、MT全体の環境を変更してくれるわけではなくて、
「Movable Type 3.0 のデータベースに格納されているデータの、文字コードの変換スクリプトのテスト版を公開します。」
だったのですね....。
今回はあきらめずに、先へ進みました。
ログイン画面に出てきたエラーは下記のようなものです。
これは、もうMT.pmの869行目を見るしかないですね....泣。
869〜870行目に
my @p = map MT::Util::decode_html($_),
split /\s*%%\s*/, MT::I18N::encode_text($args{params},$enc,'utf-8');
という部分があります。
この、最後のutf-8をeuc-jpに修正したら、エラーは出なくなりました。
ほかにも、lib/MT/L10N/ja.pmがUTF-8で書かれていたので、nkfを使ってEUCに変換したりしてみたのですが、メニューがEUCで表示されるものの、869行目のエラーが消えることはありませんでした。
(考えてみればアタリマエなのですが。)
※ja.pmはもとのUTF-8に戻しましたが、今は正常に表示されています。
やっと....
ここでログインして、再構築をしてみました。
index.htmlの先頭を確かめると....
となっていたので...これでとりあえずは成功!
と考えてよいでしょうか?
このエントリーが上手く登録されたら、とてもうれしいです:-)。
追記....
このあと構築中....のダイアログで、エントリーのタイトルが文字化けしているのを発見しました。
管理画面中の、ブログ名も文字化けしています。
ちなみに、DB内ではブログ名もEUCコードに正しく変換されています。
MTを最初からEUC-JPで構築した場合と、私のように途中から文字コードを変更した場合、どこが異なって、このような文字化け現象が起きるようになるのでしょうか...。
ぽつぽつ調べてゆきたいと思います...とほほ。
mysql> select entry_title from mt_entry; +-------------------------------------------------------------+ | entry_title | +-------------------------------------------------------------+ | Movable Type 3.0 Developer Edition日本語版ベータ 設定時メモ | | コメントのプレビュー の問題、 画像のサムネイル | | スタイルシート | | (続)スタイルシート | | コメントプレビューの不具合修正について | | MySQLへの移行..あれこれ | | 今後の課題....文字コード変換など | +-------------------------------------------------------------+ 7 rows in set (0.00 sec)
エントリーのタイトルを検索したところ、きちんと表示されました。
MySQLの環境がEUCですので、内容もEUCに変換されたということです。
でも、その先でちょっと戸惑ってしまったのです。
私は、ただ単にmt.cfgのPublishCharsetの部分を変更すればOKと思っていたのですが、ログイン画面のところでエラーがでてきてしまって...
それで、ツールを使えばいいのかな?なんて思ってしまいました。
心機一転、tugaaさんに教えていただいた、Movable Type の文字コード変換スクリプトを利用してみることにしたのです。
これは、解凍したものを設置して、ただ実行するだけのとても簡単なものでした。
バックアップは注意書きにもあるので実行前に取りました。
データベースのバックアップは先ほどのmysqldmpで取ったファイル。
また、サイト全体のバックアップを取っておきました。
ダウンロードしたmt-convert-code.tar.gzを解凍すると、mt-convert-code.cgiというファイルがひとつだけできました。
これを実行すると、下記のように表示されますので、変換前のコードと、変換後のコードを指定します。

そして、Convertボタンを押すだけです...。

こうやって画面が出て...
コンテンツが少ないせいもあり、あっという間に完了してしまいました。
さて、気を取り直して、管理画面にログイン....
っと思ったら、先ほどと変わらないエラーが....(笑)
よく読んでみれば、Movable Type の文字コード変換スクリプトツールって、MT全体の環境を変更してくれるわけではなくて、
「Movable Type 3.0 のデータベースに格納されているデータの、文字コードの変換スクリプトのテスト版を公開します。」
だったのですね....。
今回はあきらめずに、先へ進みました。
ログイン画面に出てきたエラーは下記のようなものです。
Use of uninitialized value in split at /home/blog/public_html/lib/MT.pm line 869. Use of uninitialized value in split at /home/blog/public_html/lib/MT.pm line 869. Use of uninitialized value in split at /home/blog/public_html/lib/MT.pm line 869. Use of uninitialized value in split at /home/blog/public_html/lib/MT.pm line 869. Use of uninitialized value in split at /home/blog/public_html/lib/MT.pm line 869. Use of uninitialized value in split at /home/blog/public_html/lib/MT.pm line 869.
これは、もうMT.pmの869行目を見るしかないですね....泣。
859 sub translate_templatized {
860 my $mt = shift;
861 my($text) = @_;
862 $text =~ s!<MT_TRANS ([^>]+)>!
863 my($msg, %args) = ($1);
864 while ($msg =~ /(\w+)\s*=\s*(["'])(.*?)\2/g) { #"
865 $args{$1} = $3;
866 }
867 $args{params} = '' unless defined $args{params};
868 my $enc = MT::ConfigMgr->instance()->PublishCharset;
869 my @p = map MT::Util::decode_html($_),
870 split /\s*%%\s*/, MT::I18N::encode_text($args{params
},$enc,'euc-jp');
871 $mt->translate($args{phrase}, @p);
872 !ge;
873 $text;
874 }
869〜870行目に
my @p = map MT::Util::decode_html($_),
split /\s*%%\s*/, MT::I18N::encode_text($args{params},$enc,'utf-8');
という部分があります。
この、最後のutf-8をeuc-jpに修正したら、エラーは出なくなりました。
ほかにも、lib/MT/L10N/ja.pmがUTF-8で書かれていたので、nkfを使ってEUCに変換したりしてみたのですが、メニューがEUCで表示されるものの、869行目のエラーが消えることはありませんでした。
(考えてみればアタリマエなのですが。)
※ja.pmはもとのUTF-8に戻しましたが、今は正常に表示されています。
やっと....
ここでログインして、再構築をしてみました。
index.htmlの先頭を確かめると....
!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP" /> <meta name="generator" content="http://www.movabletype.org/" /> <title>はじめてのウエブログ♪</title>
となっていたので...これでとりあえずは成功!
と考えてよいでしょうか?
このエントリーが上手く登録されたら、とてもうれしいです:-)。
追記....
このあと構築中....のダイアログで、エントリーのタイトルが文字化けしているのを発見しました。
管理画面中の、ブログ名も文字化けしています。
ちなみに、DB内ではブログ名もEUCコードに正しく変換されています。
MTを最初からEUC-JPで構築した場合と、私のように途中から文字コードを変更した場合、どこが異なって、このような文字化け現象が起きるようになるのでしょうか...。
ぽつぽつ調べてゆきたいと思います...とほほ。
投稿者 megu : 2004年06月18日 19:03
