48
37

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ArduinoIDEをアップデートしたらVSCodeのArduino出力で文字化け

Last updated at Posted at 2019-05-22

VSCode の Arduino出力が文字化けするようになった

image.png

Windows ArduinoIDE 1.8.7 を 1.8.8 にアップデートしたら発生した。

※2025/03/20追記
VSCodeのAduino拡張機能が非推奨になったので、私の環境も後継の「Arduino Community Edition」に変更しました。以下、後継版と非推奨版の両方を残しておきます。

Arduino Community Edition(後継版)

インストール方法は、@kotekさんのこちらを参照してください。私の場合は、「Arduino CLI」を別途インストールしておらずです。

  • Windows10
  • ArduinoIDE 2.3.4
  • VisualStudioCode 1.98.2 + 「Arduino Community Edition」

という状態です。「Arduino CLI」は「Arduino Community Edition」のバンドル版を使っています。@kotekさんとは少し違いますが、ちゃんと説明されているので問題なく設定できました。

Arduino: Command Path を空にする
Arduino: Path を空にする

が違うだけです。追加で

arduino.logLevel: verbose
arduino.analyzeOnOpen: false

を入れたかな?ってぐらいです。設定を変更したらVSCode再起動した方がいいです。

文字化け

ビルドログで結構重要なこの辺りが文字化けします。
image.png

対応

「arduino-cli.l4j.ini」を追加するだけです。このパスは、arduino-cli.exeと同じ場所です。
C:\Users\%username%\.vscode\extensions\vscode-arduino.vscode-arduino-community-0.7.2-win32-x64\assets\platform\win32-x64\arduino-cli\arduino-cli.l4j.ini

-Dfile.encoding=UTF8

(別途「Arduino CLI」をインストールして使っている人は、パス変えてください。※試してませんが、たぶん)

直ったッ

VSCode再起動してから。
image.png

以上。
※2025/03/20追記 ここまで

※2025/03/23追記 ここから

ライブラリのヘッダファイルが#includeできない

ところが、

#include "Ambient.h"

のようなライブラリヘッダがNotFoundになります。pathが通っていないと思い、色々調べてsetting.jsonやc_cpp_properties.jsonを設定しまいしたがダメでした。この拡張機能のissueにあったのですが、どやらデフォルトの作業フォルダを違う場所に設定しているとダメなようです。ArduinoIDE-2.xxではコンパイルOKなのですが、こちらのVSCode拡張機能ではダメなようです。

C:\work\Arduino・・・失敗

C:\Users\{username}\Documents\Arduino・・・成功

どうやら C:\Users\{username}\Documents\Arduino\libraries にライブラリがないとダメなようです。なので作業フォルダごとデフォルトにしないと面倒なことになります。

Documents好きじゃないんだよね...

拡張機能 Arduino(非推奨版)

※本家 Arduino拡張機能 がサポートを停止し非推奨になりました。

arduino_debug.l4j.ini を修正する方法(2021/03/10追記)

これまでは次項の「Extension を修正する方法」をしていたが、 Extensionのアップデートのたびに戻ってしまうので調べたら本家のissueにあった方法を試してみた。

C:\Program Files (x86)\Arduino\arduino_debug.l4j.ini
image.png

-Dfile.encoding=UTF8-Dfile.encoding=SJIS に変更する。

ArduinoIDEは UTF8 で出力して、ArduinoExtension では、SJISをUTF8に変換しようよして文字化けしている。これまでは、Extension の 「SJISをUTF8に変換」処理をコメントアウトして対処していた。これを ArduinoIDE を SJIS で出力して、Extension で SJISをUTF8に変換 をそのままさせるように。※無駄っちゃー無駄だね。

なお、アクセス権がなくて修正ができない場合は、ファイルのプロパティを開いて、セキュリティ>編集>Users(・・・)を選択>フルコントロール>チェックON
image.png
ざっと確認して、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";
            }
        }
*/

##直ったッ

image.png

今後は、Arduino Extension 側の正式対応になるんかな?

以上。

48
37
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
48
37

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?