ホームに戻る
出典 :
【備忘録】C#でShift-JISの文字列を扱う #.NETCore - Qiita
目次 :

.NET(.NET Core)でシフトJISを用いる際の注意

.NET(.NET Coreを含む)で文字コードとしてシフトJISを用いようとすると、以下のようなエラーが発生することがある。 画像 これは.NETがデフォルトではシフトJISをサポートしていないためで、解消するにはパッケージをインストールする必要がある。

解決手順(Visual Studio)

  1. NuGetから、System.Text.Encoding.CodePages をプロジェクトに追加(インストール)する。
  2. EncodingProvider クラスを使用し、シフトJISのエンコードを取得する。
    // 以下のコードは誤り(実行時エラーとなる) // ( Encoding.GetEncoding() ) StreamWriter writer = new StreamWriter( File.Open(@"hogehoge.txt", FileMode.Create), Encoding.GetEncoding("shift-jis") ); // 上記のコードを修正 // ( EncodingProvider.GetEncoding() ) EncodingProvider provider = System.Text.CodePagesEncodingProvider.Instance; var encoding = provider.GetEncoding("shift-jis"); StreamWriter writer = new StreamWriter( File.Open(@"hogehoge.txt", FileMode.Create),encoding );

余談

.NET FrameworkはデフォルトでシフトJISをサポートしているため、同様の問題は発生しない。