Visual StudioでBOMなしUTF-8のソースコードを読み込む

今どきOSSなソースコードはUTF-8で書かれていることが多いが、BOMが付いていることはまずない。

Visual StudioでこのBOMなしUTF-8なコードをコンパイルしようとすると warning C4819 が発生する。

例え作成した際にUTF-8で保存していたとしても、Visual StudioはBOMなしファイルをCP932として読み込むためにこの警告が発生する。対処方法が判らずとも、無視しても動作に影響はないため、これまでは見なかった事にするか「特定の警告を無効にする」で/wd4819を指定するかのどちらかで対処していた。

しかし、実はコンパイルオプションが追加されていることに気が付いた。

調べると、どうやらVS2015あたりで追加されたらしい。

IDEでの設定方法

IDE上にはまだ設定項目が無いため、[構成プロパティ]-[C/C++]-[コマンドライン]-[追加のオプション(D)]に直書きする必要がある。

これで警告を無視せずに済むようになる。

/utf-8や/execution-charset:utf-8を使うと、出力の文字コードもUTF-8になり、コマンドプロンプトやPowershellなどで文字化けするようになる。