5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Visual Studio Codeで「拡張子を指定してエンコードを設定」しているのに上手くいかないとき確認する箇所

Posted at

はしがき

近頃は大体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。
それでも良い物なのは確かですのでこれからも使っていきたいと思います。

5
3
0

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
5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?