tech.guitarrapc.cóm

Technical updates

Visual Studio 2022 17.13.0でデフォルトエンコーディングを設定できるようになった

Visual StudioでC#コード中に日本語入れるとshift-jisになることは何度か触れてきました。.editorconfigを使ったchartsetを制御する記事も書いたのですが、2025/Feb/13に降ってきたVisual Studio 2022 17.13.0でデフォルトエンコーディングを設定できるようになったのでメモします。

image

環境

事前にインストール・アップグレードしておきましょう。このバージョンからデフォルトエンコーディングを設定できるようになりました。

  • Visual Studio 2022 17.13.0以上

image

従来の動作

17.13未満のVisual Studioにおいて、デフォルトエンコーディングはユーザーが指定できませんでした。 これまでの動作は、日本語を使うとShift-JIS (Code page 932)がデフォルトで使われ、それ以外の場合はUTF-8 without signature - Code page 65001が使われていました。このため同じプロジェクトでも複数のcharsetがいつのまにか混在していることがありました。

例えば新規ConsoleAppプロジェクトを作成してProgram.csファイルを開き日本語を埋めます。ファイルをVS Codeでファイルを開くとShift-JISでエンコードされています。

image

コマンドでエンコードをサクッと見るためgit bashfileコマンドでエンコードを確認するとunknown-8bitと表示されます。

$ file -i Program.cs
Program.cs: text/plain; charset=unknown-8bit

TIPS: VSの名前を付けて保存でもエンコードは見れるが現在のエンコードと一致しない可能性がある

Visual Studioでも対象ファイルを開いて > File > Save As... でファイルの保存ダイアログ > Save横の▽ > Save with Encoding...でファイルのエンコードを選択できます。ダイアログが開いたときの現在のエンコードは、UTF-8 (BOMあり)でもShift-JISと判定されるようなので注意です。

image

image

デフォルトエンコーディングを設定する

Visual Studio 2022 v17.13のリリースブログを読むと気になる記述があります。

Customize file encoding: Specify the default encoding for saving files in Visual Studio.

Visual Studioを早速17.3.0にアップデートしてみると、リリース機能一覧に設定方法が載っています。

image

早速、Tools > Options > Environment > Documents > Save files with the following encodingを見てみましょう。デフォルトはJapanese (Shift-JIS) - Code page 932になっています。

image

これを、Unicode (UTF-8 without signature) - Code page 65001に変更してOKを押すと、デフォルトエンコーディングが変更されます。

image

動作確認

新規ConsoleAppプロジェクトを作って、Program.csのエンコーディングをVS Codeで確認してみましょう。無事に初期状態でUTF-8 with BOMになっています。

image

git bashfileコマンドでエンコードを確認するとutf-8と表示されます。ばっちりですね。

$ file -i Program.cs
Program.cs: text/plain; charset=utf-8

まとめ

Visual Studioのデフォルトエンコーディングが指定できるようになったことは地味ですが本当にうれしいです。.editorconfigでチームとしてのcharset指定は引き続き重要ですが、.editorconfigに頼らずVS単独で指定できないのはIDEとしてなんでという気持ちがありました。これで、.editorconfigの設定が遅れても割と安心できそうです。

参考