たまたま先ほど、utf8(データベース設定はlatin1)のサイトから、データベースの内部設定もutf8となるように、既存のデータベース全体を移行してみたところ、うまくいきましたので報告します。もちろんテスト用のサイトで行ってみてください。
mysqlが4.1.16以上であることを確認します。
utf8のデータベースを作成します。ユーザ認証の設定も、当然正しく行ってください。既存のデータベースについてもダンプできるように十分な権限を与えておきます。
mysql -u root -p既存のデータベースをmysqldumpでダンプしますが、latin1を指定することにより、異常な変換がされることを防ぎます。さらに、テーブルのCHARSET指定をutf8に変更します(変なところを変更していないかgrepなどで確認しておいた方がいいと思います)。そして、得られたダンプを、そのまま新しいデータベースに復元します。(これらを全部パイプでつなげばファイルを作らなくてもいけると思います)
mysql> CREATE DATABASE yourutf8moodledb DEFAULT CHARACTER SET utf8;
mysql> GRANT ALL ON yourutf8moodledb.* TO yourname@yourhost;
mysql> GRANT ALL ON youroldmoodledb.* TO yourname@yourhost;
mysqldump -u yourname -p youroldmoodledb --default-character-set=latin1 > /your/dumpfile1新しい1.6のサイトを構築し、config-dist.phpをconfig.phpにコピーし、各変数を正しく設定します。このとき次の設定も重要です。
sed 's/DEFAULT CHARSET=latin1/DEFAULT CHARSET=utf8/' /your/dumpfile1 > /your/dumpfile2
mysql -u yourname -p yourutf8moodledb < /your/dumpfile2
$CFG->dbname = 'yourutf8moodledb';以上でうまくいくのではないかと思います。
$CFG->unicodedb = true;
籠谷