ホームに戻る
出典 :
【備忘録】C#でShift-JISの文字列を扱う #.NETCore - Qiita
目次 :
.NET(.NET Core)でシフトJISを用いる際の注意
.NET(.NET Coreを含む)で文字コードとしてシフトJISを用いようとすると、以下のようなエラーが発生することがある。
これは.NETがデフォルトではシフトJISをサポートしていないためで、解消するにはパッケージをインストールする必要がある。
解決手順(Visual Studio)
NuGetから、
System.Text.Encoding.CodePages
をプロジェクトに追加(インストール)する。
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をサポートしているため、同様の問題は発生しない。