はしがき
近頃は大体UTF-8で何でもイケる時代になりましたが、それでもWindows環境で作業をしているとShift-Jis(CP932)から逃れることはまだ出来ないわけです。特に古いコードなんかいじってると「これコメント化けてるじゃん」みたいなことになりがち。そこで先人達は「Visual Studio Codeに特定の拡張子の場合のエンコーディングを指定しよう」と設定をする方法を指南してくれているわけです。
ところがどっこい「この設定をしても上手いこと行かねぇぞ💢」となったので原因と対策をまとめておきます。
原因
"files.autoGuessEncoding": true
が各拡張子の設定よりも前にあると自動推測モードが優先されちゃう。
対策
各拡張子のエンコード設定の後に"files.autoGuessEncoding": true
を持ってきてやる。
例
それでは具体例を挙げてどうすれば良いか見ていきましょう。
ダメパターン
この順番で記述すると、autoGuessEncoding
が優先して動いちゃうので後ろの各拡張子の設定が効かない。
{
"files.autoGuessEncoding": true,
"[bas]":
{
"files.encoding": "shiftjis"
},
"[frm]":
{
"files.encoding": "shiftjis"
},
"[bat]":
{
"files.encoding": "shiftjis"
}
}
OKパターン
ですので、files.autoGuessEncoding
の設定を後ろに持ってくる。
本例だと
-
.bas
(VB6.0の基本ファイル)、 -
.frm
(VB6.0のフォームプログラムファイル)、 -
.bat
(Windowsのバッチファイル)
はShift-Jisで開いて欲しいので"files.encoding": "shiftjis"
と設定しています。
{
"[bas]":
{
"files.encoding": "shiftjis"
},
"[frm]":
{
"files.encoding": "shiftjis"
},
"[bat]":
{
"files.encoding": "shiftjis"
},
"files.autoGuessEncoding": true
}
終わりに
気づいてしまえばなんてこと無い話ですが、意外とポンコツな一面もあるVisual Studio Code。
それでも良い物なのは確かですのでこれからも使っていきたいと思います。