C# エラー「System.ArgumentException: shift_jis is not a supported encoding name」が発生した場合の対処法

  • 作成日 2021.09.16
  • 更新日 2022.04.09
  • C#
C# エラー「System.ArgumentException: shift_jis is not a supported encoding name」が発生した場合の対処法

C#で、エラー「System.ArgumentException: shift_jis is not a supported encoding name」が発生した場合の対処法を記述してます。

環境

  • OS windows10 pro 64bit
  • .net core 3.1
  • Microsoft Visual Studio Community 2019 Version 16.7.1

エラー全文

以下のコードで発生

Encoding.GetEncoding("shift_jis")

エラー全文

System.ArgumentException: 'shift_jis' is not a supported encoding name. For information on defining a custom encoding, s
ee the documentation for the Encoding.RegisterProvider method. (Parameter 'name')
   at System.Text.EncodingTable.InternalGetCodePageFromName(String name)
   at System.Text.EncodingTable.GetCodePageFromName(String name)
   at System.Text.Encoding.GetEncoding(String name)
   at testapp.Program.Main(String[] args) in C:\Users\testuser\Program.cs:line 23

原因

.NET Coreの場合は、「shift_jis」は「System.Text.Encoding.CodePages」を使用する必要がある

対処法

「System.Text.Encoding.CodePages」を「nuget」で入手する

Install-Package System.Text.Encoding.CodePages

あとは「Encoding.GetEncoding(“shift_jis”)」の前に、以下のコードを追加します。

System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);