Visual Studio 2013/2015 で Shift JIS を UTF-8 に自動変換してコードを保存する

2017/04/14DevelopmentUnicode,Visual Studio,Xamarin

Visual Studio 2013/2015 で、ソースコードを保存するとき、ファイルのエンコーディングが Shift JIS の場合、UTF-8(BOM あり or なし)に自動変換して保存する方法です。Visual Studio 拡張を使います。

Shift JIS の問題

通常、UTF-8(BOM 付き)を Visual Studio では使います。Shift JIS でも Visual Studio 2013 までは、良い感じに扱ってくれます。

Visual Studio 2015 では、Shift JIS エンコーディングされたソース ファイルをビルドするとコンパイラ エラーが発生する場合 が、あります。

私の場合、Xamarin を利用していると、Xamarin が自動生成するファイルか元のテンプレートが、Shift JIS になっているようで、プロジェクトに日々たくさん Shift JIS のファイルがあふれている状態です。Visual Studio 2013 でコーディングしていると Visual Studio が良い感じに勝手に処理してくれますが、Xamarin Studio では Shift JIS がビルドエラーになる場合があります。必ずエラーであればまだ問題が少ないのですが、文字化けしたままビルドできてしまうこともあります。

※ Xamarin には、もうフィードバックされているか、修正されているかもしれません。最新版など、詳細は未確認。

UTF-8 に自動変換して保存

保存時に System.Text.Encoding.Default(日本語環境では Shift JIS)のファイルを UTF-8(BOM なし)へ変換する
Visual Studio 拡張「ForceUTF8」が、使えます。UTF-8 の BOM 嫌いな人が多いためか、はじめから BOM なしで保存されます。

※ Visual Studio から、ForceUTF8 で検索してインストールできます。

UTF-8(BOM 付き)で保存したい場合、「ForceUTF8 (with BOM)」を用意しました!

ForceUTF8 は、GitHub でソースコードも公開されています。ライセンスを問い合わせたところ MIT とのことで、BOM 部分を変更して公開しました

ForceUTF8 Visual Studio

一括変換

一括して既存の Shift JIS のファイルを UTF-8 にする場合は、PowerShell を使った方法が、Visual Studio サポート チーム blog で紹介されています。