.NET 5 でSJISを使う方法

.NET 5 / C#9.0

SJISを使う場合はRegisterProvider

エンコードプロバイダを登録すれば使えるようになる。

using System.Text;
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
var sjis = Encoding.GetEncoding("shift_jis");

以上。以下補足。

.NET Coreや.NET 5 のデフォのエンコードリストにSJISがないため

.NET Core.NET 5でSJISを使おうとし、エンコードをとろうと以下のようなコードを実行すると、

var sjis1 = Encoding.GetEncoding("shift_jis");

System.ArgumentExcepitonがスローされます。

こんな内容です。

'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.RegisterProvider メソッドのドキュメントを参照してください。(パラメータ 'name')

なので、RegisterProvider で プロバイダを登録すれば使えるようになります。

using System;
using System.Text;

try
{
// SJISを使おうとすると
var sjis1 = Encoding.GetEncoding("shift_jis");
}
catch (ArgumentException ex)
{
// 例外がスローされます
string s = ex.Message;
}

// このようにプロバイダを登録すれば
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);

// SJISが使えるようになります
var sjis2 = Encoding.GetEncoding("shift_jis");

登録なしで使える文字コード

int n= 0;

Encoding.GetEncodings().ToList().ForEach(info => Console.WriteLine($"★{++n} {info.DisplayName}({info.Name})"));

Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);

n= 0;

Encoding.GetEncodings().ToList().ForEach(info => Console.WriteLine($"☆{++n} {info.DisplayName}({info.Name})"));

登録なしでは以下の7種類

★1 Unicode(utf-16)
★2 Unicode (Big-Endian)(utf-16BE)
★3 Unicode (UTF-32)(utf-32)
★4 Unicode (UTF-32 Big-Endian)(utf-32BE)
★5 US-ASCII(us-ascii)
★6 Western European (ISO)(iso-8859-1)
★7 Unicode (UTF-8)(utf-8)

登録すると116種類

☆1 shift_jis(shift_jis)
☆2 IBM860(IBM860)
☆3 ibm861(ibm861)
☆4 IBM880(IBM880)
☆5 DOS-862(DOS-862)
☆6 IBM863(IBM863)
☆7 gb2312(gb2312)
☆8 IBM864(IBM864)
☆9 IBM865(IBM865)
☆10 cp866(cp866)
☆11 koi8-u(koi8-u)
☆12 IBM037(IBM037)
☆13 ibm869(ibm869)
☆14 IBM500(IBM500)
☆15 x-mac-icelandic(x-mac-icelandic)
☆16 IBM01140(IBM01140)
☆17 IBM01141(IBM01141)
☆18 IBM01142(IBM01142)
☆19 IBM273(IBM273)
☆20 IBM01143(IBM01143)
☆21 IBM01144(IBM01144)
☆22 IBM01145(IBM01145)
☆23 windows-1250(windows-1250)
☆24 IBM01146(IBM01146)
☆25 windows-1251(windows-1251)
☆26 IBM01147(IBM01147)
☆27 macintosh(macintosh)
☆28 windows-1252(windows-1252)
☆29 DOS-720(DOS-720)
☆30 IBM277(IBM277)
☆31 IBM01148(IBM01148)
☆32 x-mac-japanese(x-mac-japanese)
☆33 windows-1253(windows-1253)
☆34 IBM437(IBM437)
☆35 IBM278(IBM278)
☆36 IBM01149(IBM01149)
☆37 x-mac-chinesetrad(x-mac-chinesetrad)
☆38 windows-1254(windows-1254)
☆39 windows-1255(windows-1255)
☆40 Johab(Johab)
☆41 windows-1256(windows-1256)
☆42 x-mac-arabic(x-mac-arabic)
☆43 windows-1257(windows-1257)
☆44 x-mac-hebrew(x-mac-hebrew)
☆45 windows-1258(windows-1258)
☆46 x-mac-greek(x-mac-greek)
☆47 x-mac-cyrillic(x-mac-cyrillic)
☆48 IBM00924(IBM00924)
☆49 iso-8859-2(iso-8859-2)
☆50 iso-8859-3(iso-8859-3)
☆51 iso-8859-4(iso-8859-4)
☆52 iso-8859-5(iso-8859-5)
☆53 iso-8859-6(iso-8859-6)
☆54 IBM870(IBM870)
☆55 iso-8859-7(iso-8859-7)
☆56 iso-8859-8(iso-8859-8)
☆57 iso-8859-9(iso-8859-9)
☆58 x-mac-turkish(x-mac-turkish)
☆59 x-mac-croatian(x-mac-croatian)
☆60 windows-874(windows-874)
☆61 cp875(cp875)
☆62 IBM420(IBM420)
☆63 ks_c_5601-1987(ks_c_5601-1987)
☆64 IBM423(IBM423)
☆65 IBM424(IBM424)
☆66 IBM280(IBM280)
☆67 IBM01047(IBM01047)
☆68 IBM284(IBM284)
☆69 IBM285(IBM285)
☆70 x-mac-romanian(x-mac-romanian)
☆71 EUC-JP(EUC-JP)
☆72 x-mac-ukrainian(x-mac-ukrainian)
☆73 x-Europa(x-Europa)
☆74 ibm737(ibm737)
☆75 x-IA5(x-IA5)
☆76 big5(big5)
☆77 x-cp20936(x-cp20936)
☆78 x-IA5-German(x-IA5-German)
☆79 x-IA5-Swedish(x-IA5-Swedish)
☆80 x-IA5-Norwegian(x-IA5-Norwegian)
☆81 koi8-r(koi8-r)
☆82 ibm775(ibm775)
☆83 iso-8859-13(iso-8859-13)
☆84 IBM290(IBM290)
☆85 iso-8859-15(iso-8859-15)
☆86 x-Chinese-CNS(x-Chinese-CNS)
☆87 ASMO-708(ASMO-708)
☆88 IBM297(IBM297)
☆89 x-mac-thai(x-mac-thai)
☆90 x-cp20001(x-cp20001)
☆91 IBM905(IBM905)
☆92 x-Chinese-Eten(x-Chinese-Eten)
☆93 x-ebcdic-koreanextended(x-ebcdic-koreanextended)
☆94 x-cp20003(x-cp20003)
☆95 x-cp20004(x-cp20004)
☆96 x-cp20005(x-cp20005)
☆97 ibm850(ibm850)
☆98 IBM-Thai(IBM-Thai)
☆99 ibm852(ibm852)
☆100 IBM871(IBM871)
☆101 x-mac-ce(x-mac-ce)
☆102 IBM855(IBM855)
☆103 cp1025(cp1025)
☆104 x-cp20949(x-cp20949)
☆105 ibm857(ibm857)
☆106 IBM00858(IBM00858)
☆107 x-cp20261(x-cp20261)
☆108 IBM1026(IBM1026)
☆109 x-cp20269(x-cp20269)
☆110 Unicode(utf-16)
☆111 Unicode (Big-Endian)(utf-16BE)
☆112 Unicode (UTF-32)(utf-32)
☆113 Unicode (UTF-32 Big-Endian)(utf-32BE)
☆114 US-ASCII(us-ascii)
☆115 Western European (ISO)(iso-8859-1)
☆116 Unicode (UTF-8)(utf-8)

ちなみに、.NET Framework4.0上だと140種類でした

1 IBM EBCDIC (US - カナダ)(IBM037)
2 OEM アメリカ合衆国(IBM437)
3 IBM EBCDIC (インターナショナル)(IBM500)
4 アラビア語 (ASMO 708)(ASMO-708)
5 アラビア語 (DOS)(DOS-720)
6 ギリシャ語 (DOS)(ibm737)
7 バルト言語 (DOS)(ibm775)
8 西ヨーロッパ言語 (DOS)(ibm850)
9 中央ヨーロッパ言語 (DOS)(ibm852)
10 OEM キリル(IBM855)
11 トルコ語 (DOS)(ibm857)
12 OEM マルチリンガル ラテン I(IBM00858)
13 ポルトガル語 (DOS)(IBM860)
14 アイスランド語 (DOS)(ibm861)
15 ヘブライ語 (DOS)(DOS-862)
16 フランス語 (カナダ) (DOS)(IBM863)
17 アラビア語 (864)(IBM864)
18 北欧 (DOS)(IBM865)
19 キリル言語 (DOS)(cp866)
20 ギリシャ語, Modern (DOS)(ibm869)
21 IBM EBCDIC (多国語ラテン 2)(IBM870)
22 タイ語 (Windows)(windows-874)
23 IBM EBCDIC (ギリシャ語 Modern)(cp875)
24 日本語 (シフト JIS)(shift_jis)
25 簡体字中国語 (GB2312)(gb2312)
26 韓国語(ks_c_5601-1987)
27 繁体字中国語 (Big5)(big5)
28 IBM EBCDIC (トルコ語ラテン 5)(IBM1026)
29 IBM ラテン-1(IBM01047)
30 IBM EBCDIC (US - カナダ - ヨーロッパ)(IBM01140)
31 IBM EBCDIC (ドイツ - ヨーロッパ)(IBM01141)
32 IBM EBCDIC (デンマーク - ノルウェー - ヨーロッパ)(IBM01142)
33 IBM EBCDIC (フィンランド - スウェーデン - ヨーロッパ)(IBM01143)
34 IBM EBCDIC (イタリア - ヨーロッパ)(IBM01144)
35 IBM EBCDIC (スペイン - ヨーロッパ)(IBM01145)
36 IBM EBCDIC (UK - ヨーロッパ)(IBM01146)
37 IBM EBCDIC (フランス - ヨーロッパ)(IBM01147)
38 IBM EBCDIC (インターナショナル - ヨーロッパ)(IBM01148)
39 IBM EBCDIC (アイスランド語 - ヨーロッパ)(IBM01149)
40 Unicode(utf-16)
41 Unicode (Big-Endian)(utf-16BE)
42 中央ヨーロッパ言語 (Windows)(windows-1250)
43 キリル言語 (Windows)(windows-1251)
44 西ヨーロッパ言語 (Windows)(Windows-1252)
45 ギリシャ語 (Windows)(windows-1253)
46 トルコ語 (Windows)(windows-1254)
47 ヘブライ語 (Windows)(windows-1255)
48 アラビア語 (Windows)(windows-1256)
49 バルト言語 (Windows)(windows-1257)
50 ベトナム語 (Windows)(windows-1258)
51 韓国語 (Johab)(Johab)
52 西ヨーロッパ言語 (Mac)(macintosh)
53 日本語 (Mac)(x-mac-japanese)
54 繁体字中国語 (Mac)(x-mac-chinesetrad)
55 韓国語 (Mac)(x-mac-korean)
56 アラビア語 (Mac)(x-mac-arabic)
57 ヘブライ語 (Mac)(x-mac-hebrew)
58 ギリシャ語 (Mac)(x-mac-greek)
59 キリル言語 (Mac)(x-mac-cyrillic)
60 簡体字中国語 (Mac)(x-mac-chinesesimp)
61 ルーマニア語 (Mac)(x-mac-romanian)
62 ウクライナ語 (Mac)(x-mac-ukrainian)
63 タイ語 (Mac)(x-mac-thai)
64 中央ヨーロッパ言語 (Mac)(x-mac-ce)
65 アイスランド語 (Mac)(x-mac-icelandic)
66 トルコ語 (Mac)(x-mac-turkish)
67 クロアチア語 (Mac)(x-mac-croatian)
68 Unicode (UTF-32)(utf-32)
69 Unicode (UTF-32 ビッグ エンディアン)(utf-32BE)
70 繁体字中国語 (CNS)(x-Chinese-CNS)
71 TCA 台湾(x-cp20001)
72 繁体字中国語 (Eten)(x-Chinese-Eten)
73 IBM5550 台湾(x-cp20003)
74 TeleText 台湾(x-cp20004)
75 Wang 台湾(x-cp20005)
76 西ヨーロッパ言語 (IA5)(x-IA5)
77 ドイツ語 (IA5)(x-IA5-German)
78 スウェーデン語 (IA5)(x-IA5-Swedish)
79 ノルウェー語 (IA5)(x-IA5-Norwegian)
80 US-ASCII(us-ascii)
81 T.61(x-cp20261)
82 ISO-6937(x-cp20269)
83 IBM EBCDIC (ドイツ)(IBM273)
84 IBM EBCDIC (デンマーク - ノルウェー)(IBM277)
85 IBM EBCDIC (フィンランド - スウェーデン)(IBM278)
86 IBM EBCDIC (イタリア)(IBM280)
87 IBM EBCDIC (スペイン)(IBM284)
88 IBM EBCDIC (UK)(IBM285)
89 IBM EBCDIC (日本語カタカナ)(IBM290)
90 IBM EBCDIC (フランス)(IBM297)
91 IBM EBCDIC (アラビア語)(IBM420)
92 IBM EBCDIC (ギリシャ語)(IBM423)
93 IBM EBCDIC (ヘブライ語)(IBM424)
94 IBM EBCDIC (韓国語 Extended)(x-EBCDIC-KoreanExtended)
95 IBM EBCDIC (タイ語)(IBM-Thai)
96 キリル言語 (KOI8-R)(koi8-r)
97 IBM EBCDIC (アイスランド語)(IBM871)
98 IBM EBCDIC (キリル言語 - ロシア語)(IBM880)
99 IBM EBCDIC (トルコ語)(IBM905)
100 IBM ラテン-1(IBM00924)
101 日本語 (JIS 0208-1990 および 0212-1990)(EUC-JP)
102 簡体字中国語 (GB2312-80)(x-cp20936)
103 韓国語 Wansung(x-cp20949)
104 IBM EBCDIC (キリル言語 セルビア - ブルガリア)(cp1025)
105 キリル言語 (KOI8-U)(koi8-u)
106 西ヨーロッパ言語 (ISO)(iso-8859-1)
107 中央ヨーロッパ言語 (ISO)(iso-8859-2)
108 ラテン 3 (ISO)(iso-8859-3)
109 バルト言語 (ISO)(iso-8859-4)
110 キリル言語 (ISO)(iso-8859-5)
111 アラビア語 (ISO)(iso-8859-6)
112 ギリシャ語 (ISO)(iso-8859-7)
113 ヘブライ語 (ISO-Visual)(iso-8859-8)
114 トルコ語 (ISO)(iso-8859-9)
115 エストニア語 (ISO)(iso-8859-13)
116 ラテン 9 (ISO)(iso-8859-15)
117 ヨーロッパ(x-Europa)
118 ヘブライ語 (ISO-Logical)(iso-8859-8-i)
119 日本語 (JIS)(iso-2022-jp)
120 日本語 (JIS 1 バイト カタカナ可)(csISO2022JP)
121 日本語 (JIS 1 バイト カタカナ可 - SO/SI)(iso-2022-jp)
122 韓国語 (ISO)(iso-2022-kr)
123 簡体字中国語 (ISO-2022)(x-cp50227)
124 日本語 (EUC)(euc-jp)
125 簡体字中国語 (EUC)(EUC-CN)
126 韓国語 (EUC)(euc-kr)
127 簡体字中国語 (HZ)(hz-gb-2312)
128 簡体字中国語 (GB18030)(GB18030)
129 ISCII デバナガリ文字(x-iscii-de)
130 ISCII ベンガル語(x-iscii-be)
131 ISCII タミール語(x-iscii-ta)
132 ISCII テルグ語(x-iscii-te)
133 ISCII アッサム語(x-iscii-as)
134 ISCII オリヤー語(x-iscii-or)
135 ISCII カナラ語(x-iscii-ka)
136 ISCII マラヤラム語(x-iscii-ma)
137 ISCII グジャラート語(x-iscii-gu)
138 ISCII パンジャブ語(x-iscii-pa)
139 Unicode (UTF-7)(utf-7)
140 Unicode (UTF-8)(utf-8)