逆らうのはやめて、UTF-8にしました。でも、コワイので、とりあえず、DBをあたらしく作りました。既存のDBをダンプして、文字コードをUTF-8に変換し、SET client_encoding = ‘EUC_JP’;とあったのを ‘UNICODE’に直し、新しく、UTF-8で作成したDBに戻して、mt-config.cgiで、そっちを使うようにしたら、ナンのエラーもなくさくっと投稿できましたよ。
$ pg_dump –o db.out blog
$ nkf –Ew –overwrite db.out
$ createdb --template=template0 --encoding=UNICODE --locale=C --owner=foo blog2
$ psql –f db.out blog2
$ nkf –Ew –overwrite db.out
$ createdb --template=template0 --encoding=UNICODE --locale=C --owner=foo blog2
$ psql –f db.out blog2
データベースを作成するときに、template1 と文字コードが違う場合には、template0をテンプレートにしないと出来ないらしいです。なお、データベースごとにロケールが持てるのは PostgreSQL 8.4以降のようなので、それ以前のバージョンで同じような問題にぶち当たってしまった方は、全部まるっとUTF-8で作り直すしかなさそうです。
もちろん、上の作業の後、mt-config.cgiの PublishCharSetとDatabase をそれぞれ、しかるべき値にした上で、Windows Live Writerのブログの詳細設定で、文字コードをUTF-8に変えるのを忘れてはいけません。
とりあえず、これで、今まで通りに、WLWでブログが更新できるようになったので、一安心です。
コメント