VSCodeでShift_JISが自動判定でISO 8859-2になる場合の対処法

Auto Guess Encodingで自動判定

VS Codeは設定(Settings)でAuto Guess Encodingにチェックを入れて有効にするとファイルの文字コードを自動判定できるようになる。

便利な機能だがShift_JISファイルだと自動判定でISO 8859-2だと誤判定されてしまうことがある。

フロント側のコーディング作業だと主にCSSが誤判定されてコメントが以下のように文字化けすることが多い。

@charset "shift-jis";

/* CSS‚Ş•śŽš‰ť‚Ż‚ˇ‚éƒTƒ“ƒvƒ‹ */
.foo {
  margin: 0;
}
VS Code 文字コードの自動判定でCSSが文字化けした例
VS Code 文字コードの自動判定でCSSが文字化けした例

ファイルの種類ごとに設定する

設定(Settings)でAuto Guess Encodingにチェックを入れると全ファイルが対象になる。

VSCodeでShift_JISが自動判定でISO 8859-2になる場合の対処法

そのため、CSSのみshiftjisで読み込む場合はsettings.jsonを開いて以下のようにファイルの種類ごとに修正して自動判定させて、CSSはshiftjisで開くようにすればISO 8859-2で誤判定されることはなくなる。

"[html]": {
  "files.autoGuessEncoding": true,
},
"[css]": {
  "files.encoding": "shiftjis",
},
"[javascript]": {
  "files.autoGuessEncoding": true
},

※ これだとutf-8のCSSもshiftjisで開かれるのでCSSを主にshiftjisで作成していてISO 8859-2で誤判定されることを避けてたい人用の対処法。