Moodle/UTF-8
の編集
https://oku.edu.mie-u.ac.jp:443/~okumura/linux/?Moodle%2FUTF-8
[
トップ
] [
編集
|
差分
|
バックアップ
|
添付
|
リロード
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
* MoodleのEUC-JP→UTF-8移行 [#q5dfcfcc] Moodle 1.6にはUTF-8移行ツールが付くらしい。 ** データベースの移行 [#p0f7c7c0] 古いデータをバックアップ mysqldump -u root --default-character-set=latin1 moodle >moodle.sql これをUTF-8に変換するには次でいいはず: iconv -c -f EUC-JP-MS -t UTF-8 moodle.sql >moodlex.sql ところがやってみると微妙に変換がおかしいところがあった(小文字全角ローマ数字?)。そこで nkf -Es moodle.sql | iconv -c -f CP932 -t UTF-8 >moodlex.sql としたが,今度はnkfのバグで長い行がむちゃくちゃになってしまった。 そこで私が大昔に作った kf というフィルタを使う: kf -Es moodle.sql | iconv -c -f CP932 -t UTF-8 >moodlex.sql これが一番良さそう。 次はデータベースの再構築: mysql -u root drop database moodle; create database moodle; grant select,insert,update,delete,create,drop,index,alter on moodle.* to moodleuser@ホスト名 identified by 'パスワード'; quit mysql -u root --default-character-set=latin1 moodle <moodlex.sql ところが次のようなエラー。 ERROR 1153 (08S01) at line XXXX: Got a packet bigger than 'max_allowed_packet' bytes /etc/my.cnf で max_allowed_packet を十分大きくしておく(16Mとか)。さらに mysql -u root --default-character-set=latin1 --max_allowed_packet=16M moodle <moodlex.sql のようにするとよい。 ** 失敗談 [#q41a61a8] 上記のようにして取り出したダンプファイルをutf-8にしようとした: sed 's/\blatin1\b/utf8/g' moodlex.sql >moodle-utf8.sql ところが mysql -u root moodle <moodle-utf8.sql ERROR 1071 (42000) at line XXX: Specified key was too long; max key length is 1000 bytes となってしまった。UTF-8なテーブルでは資源が余計に要るのか。 これに関しては [[Changes in release 4.1.16:http://dev.mysql.com/doc/refman/4.1/en/news-4-1-16.html]] で Specified key was too long を検索すると,MySQL のバグだったみたい。 これについては [[Japanese: MySQL UTF8読み込みエラー:ERROR 1071 (42000):http://moodle.org/mod/forum/discuss.php?d=51988#243920]] で議論されている。 いろいろな解決法があると思うが,たまたま私は次のような小細工でうまくいった。 これはすでに utf-8 化した Moodle 1.5.3+ から 1.6.1 にデータを移行する際の話である。 sed 's/ varchar(250) / varchar(150) /g' moodle-utf8.sql >x.sql ** moodledataの移行 [#had33d55] 古いmoodledataを持ってくる。 moodledata/cache/* を消す。 convmv (http://j3e.de/linux/convmv/) を使ってファイル名をUTF-8にする: # convmv -r -f euc-jp -t utf-8 moodledata でテストしてうまくいきそうなら # convmv -r -f euc-jp -t utf-8 moodledata --notest euc-jp-ms な文字も扱ってくれるみたい。 ** その他 [#u91c5e1d] -http://moodle.org/mod/forum/discuss.php?d=51988
タイムスタンプを変更しない
* MoodleのEUC-JP→UTF-8移行 [#q5dfcfcc] Moodle 1.6にはUTF-8移行ツールが付くらしい。 ** データベースの移行 [#p0f7c7c0] 古いデータをバックアップ mysqldump -u root --default-character-set=latin1 moodle >moodle.sql これをUTF-8に変換するには次でいいはず: iconv -c -f EUC-JP-MS -t UTF-8 moodle.sql >moodlex.sql ところがやってみると微妙に変換がおかしいところがあった(小文字全角ローマ数字?)。そこで nkf -Es moodle.sql | iconv -c -f CP932 -t UTF-8 >moodlex.sql としたが,今度はnkfのバグで長い行がむちゃくちゃになってしまった。 そこで私が大昔に作った kf というフィルタを使う: kf -Es moodle.sql | iconv -c -f CP932 -t UTF-8 >moodlex.sql これが一番良さそう。 次はデータベースの再構築: mysql -u root drop database moodle; create database moodle; grant select,insert,update,delete,create,drop,index,alter on moodle.* to moodleuser@ホスト名 identified by 'パスワード'; quit mysql -u root --default-character-set=latin1 moodle <moodlex.sql ところが次のようなエラー。 ERROR 1153 (08S01) at line XXXX: Got a packet bigger than 'max_allowed_packet' bytes /etc/my.cnf で max_allowed_packet を十分大きくしておく(16Mとか)。さらに mysql -u root --default-character-set=latin1 --max_allowed_packet=16M moodle <moodlex.sql のようにするとよい。 ** 失敗談 [#q41a61a8] 上記のようにして取り出したダンプファイルをutf-8にしようとした: sed 's/\blatin1\b/utf8/g' moodlex.sql >moodle-utf8.sql ところが mysql -u root moodle <moodle-utf8.sql ERROR 1071 (42000) at line XXX: Specified key was too long; max key length is 1000 bytes となってしまった。UTF-8なテーブルでは資源が余計に要るのか。 これに関しては [[Changes in release 4.1.16:http://dev.mysql.com/doc/refman/4.1/en/news-4-1-16.html]] で Specified key was too long を検索すると,MySQL のバグだったみたい。 これについては [[Japanese: MySQL UTF8読み込みエラー:ERROR 1071 (42000):http://moodle.org/mod/forum/discuss.php?d=51988#243920]] で議論されている。 いろいろな解決法があると思うが,たまたま私は次のような小細工でうまくいった。 これはすでに utf-8 化した Moodle 1.5.3+ から 1.6.1 にデータを移行する際の話である。 sed 's/ varchar(250) / varchar(150) /g' moodle-utf8.sql >x.sql ** moodledataの移行 [#had33d55] 古いmoodledataを持ってくる。 moodledata/cache/* を消す。 convmv (http://j3e.de/linux/convmv/) を使ってファイル名をUTF-8にする: # convmv -r -f euc-jp -t utf-8 moodledata でテストしてうまくいきそうなら # convmv -r -f euc-jp -t utf-8 moodledata --notest euc-jp-ms な文字も扱ってくれるみたい。 ** その他 [#u91c5e1d] -http://moodle.org/mod/forum/discuss.php?d=51988
テキスト整形のルールを表示する