問題
jsPsych で実験したデータ(CSV形式で保存)を、Excel で読み込むと日本語がばけばけで読めない。
原因や対処方法
以前に書いた記事ですが、結論としてはBOM付UTFとして保存し直すか、Excel から UTF-8 を指定して読み込みます。
https://qiita.com/temochiz/items/87a02582631246c529dc
そこで今回の話題
Chat-GPT4(以下、チャッピー) が出た頃から、jsPsych でプログラムを書くときに、ちょくちょく尋ねていたのですが、当初は Ver.6 までした対応していなかったのが、いつの間にか(たぶん)最新バージョンまでサポートしていました。
そこで、そろそろ教えてもらえるんじゃないかと思ってチャッピーに聞いてみました。
「jsPsych で、BOM 付 UTF で保存したい」
と、いうことで、生成してもらったのが以下のコードです。
いつもお約束の initJsPsych で CSV 形式の filename で保存したいときは、こんなコードで書いていますが、
var jsPsych = initJsPsych({
on_finish: function () {
jsPsych.data.get().localSave('csv', filename);
}
});
on_finish で、データの先頭に BOM(byte order mark) を入れておきます。
var jsPsych = initJsPsych({
on_finish: function () {
const csv = jsPsych.data.get().csv();
const BOM = '\uFEFF'; // UTF-8 BOM
const csvWithBOM = BOM + csv;
const blob = new Blob([csvWithBOM], { type: 'text/csv;charset=utf-8;' });
const link = document.createElement("a");
link.href = URL.createObjectURL(blob);
link.download = filename;
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
}
});
動作確認
できあがったファイルをクリックしてみます。
できてる! 毎度のめんどくさい一手間がなくなってスッキリ。
ありがとう、チャッピー!
余談ですが、jsPsych はいつの間にか メジャーバージョンが8になっていて、そのままチャッピーに聞いてもバージョン混在で思ったように答えてくれません。 結局、カスタムGPTで、jsPsych 本体、CSS、プラグインを読み込ませておいて質問する方法で落ち着きました。

