GIFT問題の文字化け対策

GIFT問題の文字化け対策

- Tatsuya Shirai の投稿
返信数: 0

 しばらく本家のBugで読み込みの実験を行うことのできなかったLessonモジュールの問題のインポート機能ですが,先日のbugfixで直ったようです.
(私はまだMoodleをe-Learningシステムとして使い込んでいませんので,レッスンモジュールを使用したことがありませんでした.先日,PowerPointの読み込みに関する問題で解析しただけです.)

 早速,サンプルのGIFT形式の問題をインポートしてみましたところ,見事に化けました...

グラントの墓には誰が埋められていますか?{~グラント ~ジェファーソン =誰も埋められていない}

グラントはグラントの墓に {~埋められている =埋葬されている ~生きている} 。

グラントはグラントの墓に埋められている。{FALSE}

グラントの墓には誰が埋められていますか?{=誰も埋められていない =1人も埋められていない}

ユリシーズ S. グラントは、いつ生まれましたか?{#1822}

テキストファイルはWindows上で動く秀丸エディタ,意図的に文字エンコードはUTF-8ではなく,シフトJISです.自動的に判断する機能は無さそうですね.

 結論から言いますと,mod/lesson/format.phpの43行目近辺にあるimportprocess():引数が3個ある方です,を以下のように修正してシフトJIS形式からでも読み込めることを確認しました.単にファイルから読んだテキストデータを一行ずつUTF-8にエンコードしているだけです.さらに,Windowsのメモ帳(notepad.exe)で保存したシフトJIS,UTF-8共に読み込むことが出来ました.

 

        if (! $lines = $this->readdata($filename)) {
            notify("File could not be read, or was empty");
            return false;
        }

        foreach ($lines as $key => $line) {  // (ADD)
            $lines[$key] = mb_convert_encoding($line, 'UTF-8', 'auto'); // (ADD)
        }  // (ADD)
        if (! $questions = $this->readquestions($lines)) {   // Extract all the questions
            notify("There are no questions in this file!");
            return false;
        }

 皆さんは,UTF-8形式で出力可能なテキストエディタを使用して問題を作成しているのでしょうか?