C#基本

[C#] .NET CoreでShift-JISを扱う

2021年8月6日

.NET Coreの文字コードは標準でUnicodeとASCIIのみサポートしているため、
そのままではShift-JISを扱えません。

なので、Shift-JISを扱う場合は、プログラムに設定が必要です。

サンプル

.NET Coreでは、Shift-JISのEncodingを生成しようとした時点で
System.ArgumentException: ''shift_jis' is not a supported encoding name.
という例外が発生します。

例1)エラーとなるパターン

using System.IO;
using System.Text;

//Encodingの生成(文字コード)
Encoding enc = Encoding.GetEncoding("shift_jis");

//テキストファイルパス
string path = @"C:¥test.txt";

//テキストファイルをまとめて読み込む
string str;
using (var file = new StreamReader(path, enc))
{
  str = file.ReadToEnd();
}

 

以下のコードはエラーになりません。
(違いは5行目のコードが追加されているのみです。)

例2)エラーとならないパターン

>using System.IO;
using System.Text;

//Unicode以外の文字コードを使用する設定
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); 

//Encodingの生成(文字コード)
Encoding enc = Encoding.GetEncoding("shift_jis");

//テキストファイルパス
string path = @"C:¥test.txt";

//テキストファイルをまとめて読み込む
string str;
using (var file = new StreamReader(path, enc))
{
  str = file.ReadToEnd();
}

備考

  • .NET CoreでShift-JISを扱うには、
    Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
    を呼び出せばOKです。

関連記事

-C#基本
-,