目次
検証環境
- .NET Core 3.1
- System.Text.Encoding.CodePages 5.0.0
実装
NuGet で System.Text.Encoding.CodePages
をインストールする。
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
var enc = Encoding.GetEncoding("Shift_JIS");
補足
Encoding.Default
Encoding.Default
でシステムのデフォルトエンコーディングを取得できるが、.NET Framework と .NET Core 以降では値が変わる。
.NET Framework では Shift_JIS
であったが、 .NET Core では UTF-8
となる。
UTF-8
Encoding.UTF8
で取得する Encoding
は BOM 付きとなる。
new UTF8Encoding()
で引数 encoderShouldEmitUTF8Identifier
に false
を設定した場合は BOM なしとなる。デフォルトが false
のため、引数なしで初期化しても同様である。
Encoding.Default
で取得する UTF-8
の Encoding
は BOM なしである。
StreamWriter でそれぞれのエンコードを指定して書き出した時のバイト列は次の通り。 「EF-BB-BF-」がBOMの部分。
Encoding.Default E3-83-91-E3-83-B3-E3-81-AE-E8-80-B3 Encoding.UTF8 EF-BB-BF-E3-83-91-E3-83-B3-E3-81-AE-E8-80-B3-0D-0A UTF8Encoding(encoderShouldEmitUTF8Identifier:false) E3-83-91-E3-83-B3-E3-81-AE-E8-80-B3-0D-0A