Moodle を UTF-8 で運用する際、サーバの PHP のデフォルト文字コードが EUC-JP だったりすると、Moodle で入力した日本語が保存されなかったり、文字化けしたりします。
そういう場合は、moodle/config.php に以下の記述を追加します。
ini_set("default_charset", "UTF-8"); ini_set("mbstring.encoding_translation", "off"); ini_set("mbstring.substitute_character", "none"); ini_set("output_buffering", "on"); ini_set("output_handler", "mb_output_handler"); mb_language("Japanese"); mb_internal_encoding("UTF-8"); mb_http_input("auto"); mb_http_output("UTF-8"); if (function_exists("mb_http_output") && function_exists("mb_internal_encoding") && function_exists("mb_convert_variables")) { mb_convert_variables(((mb_http_output() != 'pass') ? mb_http_output() : mb_internal_encoding()), "ASCII,JIS,EUC-JP,eucJP-win,UTF-8,SJIS,SJIS-win", $_POST); } $CFG->lang = 'ja_utf8';
最後の 1行以外は、個人的に PHP で UTF-8 のシステムを作成する際によく使うコードです。
最後の 1行については、【サイト管理】 → 【言語設定】 → 【言語設定】 → 【デフォルト言語】 の説明に
あなたがデータベース接続問題に関するローカライズされたメッセージを表示させたい場合、config.php に $CFG->lang=”yourlangcode_utf8″; と設定することもできます。
という記述があったので、追加してみたら上手くいきました。MySQL のバージョンや設定なども関係してくると思いますが、その辺は未調査…。