C#でエンコーディング関連の処理をするとき、例えばshift_jisであれば下記のように行うかと思います。
Encoding encoding = Encoding.GetEncoding("shift_jis");
ただ、 .NET Framework の場合はそれでできていましたが、.NET の場合は下記のように例外が発生することもあるかと思います。
System.ArgumentException: 'shift_jis' is not a supported encoding name. For information on defining a custom encoding, see the documentation for the Encoding.RegisterProvider method. (Parameter 'name')
shift_jisが非サポートということなので、Encodingを調べてみます。
foreach (EncodingInfo info in Encoding.GetEncodings())
{
Console.WriteLine($"{info.Name}");
}
下記のように出力されました。どうやらshift_jisはないようです。
utf-16 utf-16BE utf-32 utf-32BE us-ascii iso-8859-1 utf-8
.NET ではOSに依存する機能はサポートされないようです。
そこで下記を実行することで使えるようになります。
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
もう一度foreachで列挙してみます。shift_jis、入っていました。
shift_jis IBM860 ibm861 IBM880 DOS-862 IBM863 gb2312 IBM864 IBM865 cp866 koi8-u IBM037 ibm869 IBM500 x-mac-icelandic IBM01140 IBM01141 IBM01142 IBM273 IBM01143 IBM01144 IBM01145 windows-1250 IBM01146 windows-1251 IBM01147 macintosh windows-1252 DOS-720 IBM277 IBM01148 x-mac-japanese windows-1253 IBM437 IBM278 IBM01149 x-mac-chinesetrad windows-1254 windows-1255 Johab windows-1256 x-mac-arabic windows-1257 x-mac-hebrew windows-1258 x-mac-greek x-mac-cyrillic IBM00924 iso-8859-2 iso-8859-3 iso-8859-4 iso-8859-5 iso-8859-6 IBM870 iso-8859-7 iso-8859-8 iso-8859-9 x-mac-turkish x-mac-croatian windows-874 cp875 IBM420 ks_c_5601-1987 IBM423 IBM424 IBM280 IBM01047 IBM284 IBM285 x-mac-romanian EUC-JP x-mac-ukrainian x-Europa ibm737 x-IA5 big5 x-cp20936 x-IA5-German x-IA5-Swedish x-IA5-Norwegian koi8-r ibm775 iso-8859-13 IBM290 iso-8859-15 x-Chinese-CNS ASMO-708 IBM297 x-mac-thai x-cp20001 IBM905 x-Chinese-Eten x-ebcdic-koreanextended x-cp20003 x-cp20004 x-cp20005 ibm850 IBM-Thai ibm852 IBM871 x-mac-ce IBM855 cp1025 x-cp20949 ibm857 IBM00858 x-cp20261 IBM1026 x-cp20269 utf-16 utf-16BE utf-32 utf-32BE us-ascii iso-8859-1 utf-8
