VSCode の Arduino出力が文字化けするようになった
Windows ArduinoIDE 1.8.7 を 1.8.8 にアップデートしたら発生した。
arduino_debug.l4j.ini を修正する方法(2021/03/10追記)
これまでは次項の「Extension を修正する方法」をしていたが、 Extensionのアップデートのたびに戻ってしまうので調べたら本家のissueにあった方法を試してみた。
C:\Program Files (x86)\Arduino\arduino_debug.l4j.ini
-Dfile.encoding=UTF8
を -Dfile.encoding=SJIS
に変更する。
ArduinoIDEは UTF8 で出力して、ArduinoExtension では、SJISをUTF8に変換しようよして文字化けしている。これまでは、Extension の 「SJISをUTF8に変換」処理をコメントアウトして対処していた。これを ArduinoIDE を SJIS で出力して、Extension で SJISをUTF8に変換 をそのままさせるように。※無駄っちゃー無駄だね。
なお、アクセス権がなくて修正ができない場合は、ファイルのプロパティを開いて、セキュリティ>編集>Users(・・・)を選択>フルコントロール>チェックON
ざっと確認して、ArduinoIDEとVSCodeの出力は上手くいっているようだった。もし問題があるようなら、上記をもとに戻して、次項の「Extension を修正する方法」にしてください。その際、コメント頂けると助かります。
※2021/04/13追記
ArduinoIDEを 1.8.12 → 1.8.13 にしたところ、arduino_debug.l4j.ini
が初期化されてしまいました。上記をもう一度設定することで直ります。
また、これは私だけかもしれませんが、ESP32のボードマネージャの表示がされなくなりました。ESP32用のボードマネージャの設定をし直したら表示されるようになりました。
Extension を修正する方法
しばらく放っておいたが 1.8.9 になっても直らないんでググった。
Arduino for Visual Studio Code出力の文字化け対策
原因は色々あるみたいだが今回は、ArduinoIDE をアップデートしたら発生したと思うのでArduinoIDE側の出力が変わったと思われます。
しかし、取り敢えずの対応は VSCodeのArduino Extension を修正してしまおうと言うものだと思う。具体的には下記ソースの
変更:2019.06.24
0.2.25→0.2.26
変更:2019.07.17
0.2.26→0.2.27
変更:2020.02.09
0.2.27→0.2.29
変更:2020.03.27
0.2.29→0.3.0
変更:2020.10.16
0.3.0→0.3.2
変更:2021.03.30
0.3.0→x.x.x
「x.x.x」は arduino Extension のバージョン
C:\Users\%username%\.vscode\extensions\vsciot-vscode.vscode-arduino-x.x.x\out\src\common\util.js
の 205行目辺りをコメントアウトする。
/*
if (os.platform() === "win32") {
try {
const chcp = childProcess.execSync("chcp.com");
codepage = chcp.toString().split(":").pop().trim();
}
catch (error) {
outputChannel_1.arduinoChannel.warning(`Defaulting to code page 850 because chcp.com failed.\
\rEnsure your path includes %SystemRoot%\\system32\r${error.message}`);
codepage = "850";
}
}
*/
#直ったッ
今後は、Arduino Extension 側の正式対応になるんかな?
以上。