立入|ITブログ
【C#】「ArgumentException shift_jis is not a supported encoding name 」でSHIFT_JISが指定できない時は?

.Net CoreのプログラムでSHIFT_JISを指定するとエラーが発生する

.Net Coreのプログラムで文字コードにSHIFT_JISを設定しようとすると、ビルドはできますが、下記のエラーが発生します。

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

.Net Coreでは標準でSHIFT_JISが使用できない

原因は .NET CoreではSHIFT_JISを標準で扱っていない事です。

https://learn.microsoft.com/ja-jp/dotnet/api/system.text.encoding.registerprovider?view=net-6.0

プロバイダーを登録する事でSHIFT_JISが使用できるようになる

下記のコードで、標準ではサポートされていない文字コードを使用できるようになります。

Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);

これで下記のようにSHIFT_JISを指定してもエラーが発生しなくなります。

Encoding encoding = Encoding.GetEncoding("Shift_JIS");