.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です。