.NET Core 3.1 で Shift-JIS エンコードを利用しようとした際に調べたこと。
やりたいこと
- .NET Core 3.1 で Shift-JIS を扱いたい
環境
- Windows 10 Pro
- Visual Studio 2019
- .NET Core 3.1
最初に
何も考えずに
Encoding.GetEncoding("Shift_JIS");
のようにして実装したところ、以下エラーが発生。
System.NotSupportedException: 'No data is available for encoding 932. For information on defining a custom encoding, see the documentation for the Encoding.RegisterProvider method.'
調査
改めて .NET のエンコードについて調べてみる。
- .NET で文字エンコーディング クラスを使用する方法
.NET で使用できる標準の文字エンコーディングは、ASCII、UTF-7、UTF-8、UTF-16、UTF-32。
上記以外のエンコードを使用するためには、コードページのエンコードプロバイダーへの登録が必要となる。
- Encoding.RegisterProvider
- CodePagesEncodingProvider
コード追加
ということで、Shitf-JIS エンコード処理の前に、以下コードを追加。
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
無事に実行できた。