コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【.NET Core】Unhandled Exception: System.ArgumentException: 'shift_jis' is not a supported encoding name

概要

using System.Text;

class Program
{
    static void Main()
    {
        var encoding = Encoding.GetEncoding( "shift_jis" );
    }
}

Encoding.GetEncoding で Shift-JIS を使用する際に

Unhandled Exception: System.ArgumentException: 
'shift_jis' is not a supported encoding name. 
For information on defining a custom encoding, 
see the documentation for the Encoding.RegisterProvider method.

このエラーが発生した場合は

f:id:baba_s:20191224180238p:plain

VIsual Studio メニューの「ツール > NuGet パッケージ マネージャー >
ソリューションの NuGet パッケージの管理」を選択し、

f:id:baba_s:20191224180240p:plain

「参照」タブの検索欄に「System.Text.Encoding.CodePages」と入力して
表示された「System.Text.Encoding.CodePages」を選び、

f:id:baba_s:20191224180243p:plain

Shift-JIS を使いたいプロジェクトにチェックを入れて「インストール」を押します

using System.Text;

class Program
{
    static void Main()
    {
        // ★
        Encoding.RegisterProvider( CodePagesEncodingProvider.Instance );

        var encoding = Encoding.GetEncoding( "shift_jis" );
    }
}

そして、Shift-JIS を使用するコードよりも前に

Encoding.RegisterProvider( CodePagesEncodingProvider.Instance );

と記述することで、Shift-JIS が使えるようになります