文字列のエンコーディング Encodingクラス [C#]

ファイルの入出力プログラムを作成していると、ファイルの読み書きなどで文字コードを指定したい場合があります。

今回は、C#(.NET Framework)で文字列のエンコードを指定してエンコーディングする方法について紹介します。

文字列のエンコーディング

C#(.NET Framework)で文字列をエンコーディングする際は、System.Text名前空間にあるEncodingクラスを使用します。
Encodingクラスは、文字エンコーディングを表します。

Encodingクラスのプロパティでエンコーディングを指定する

Encodingクラスには、エンコーディングを表すプロパティがいくつか用意されています。

以下に代表的なプロパティの使用例を記載します。

GetEncodingメソッドを使用してエンコーディングを指定する

Encodingクラスには、GetEncodingメソッドが用意されており、指定したコードページのエンコーディングを行うことができます。GetEncodingメソッドの引数にはコードページIDまたはコードページの名前を指定することもできます。

以下にコードページIDを指定した例と、コードページ名を指定した例を記載します。

コードページIDを指定したGetEncodingメソッドの例

コードページ名を指定したGetEncodingメソッドの例

コードページ一覧

C#(.NET Framework)で使用できるコードページの一覧を記載しておきます。

コードページ 名前 表示名
37 IBM037 IBM EBCDIC (米国-カナダ) IBM EBCDIC (US-Canada)
437 IBM437 OEM 米国 OEM United States
500 IBM500 IBM EBCDIC (インターナショナル) IBM EBCDIC (International)
708 ASMO-708 アラビア語 (ASMO 708) Arabic (ASMO 708)
720 DOS-720 アラビア語 (DOS) Arabic (DOS)
737 ibm737 ギリシャ語 (DOS) Greek (DOS)
775 ibm775 バルト語 (DOS) Baltic (DOS)
850 ibm850 西ヨーロッパ言語 (DOS) Western European (DOS)
852 ibm852 中央ヨーロッパ言語 (DOS) Central European (DOS)
855 IBM855 OEM キリル文字 OEM Cyrillic
857 ibm857 トルコ語 (DOS) Turkish (DOS)
858 IBM00858 OEM 多言語ラテン I OEM Multilingual Latin I
860 IBM860 ポルトガル語 (DOS) Portuguese (DOS)
861 ibm861 アイスランド語 (DOS) Icelandic (DOS)
862 DOS-862 ヘブライ語 (DOS) Hebrew (DOS)
863 IBM863 フランス語 (カナダ) (DOS) French Canadian (DOS)
864 IBM864 アラビア語 (864) Arabic (864)
865 IBM865 北欧 (DOS) Nordic (DOS)
866 cp866 キリル語 (DOS) Cyrillic (DOS)
869 ibm869 ギリシャ語、モダン (DOS) Greek, Modern (DOS)
870 IBM870 IBM EBCDIC (多言語ラテン-2) IBM EBCDIC (Multilingual Latin-2)
874 windows-874 タイ語 (Windows) Thai (Windows)
875 cp875 IBM EBCDIC (ギリシャ語モダン) IBM EBCDIC (Greek Modern)
932 shift_jis 日本語 (Shift-JIS) Japanese (Shift-JIS)
936 gb2312 簡体字中国語 (GB2312) Chinese Simplified (GB2312)
949 ks_c_5601-1987 韓国語 Korean
950 big5 繁体字中国語 (Big5) Chinese Traditional (Big5)
1026 IBM1026 IBM EBCDIC (トルコ語ラテン-5) IBM EBCDIC (Turkish Latin-5)
1047 IBM01047 IBM ラテン-1 IBM Latin-1
1140 IBM01140 IBM EBCDIC (米国-カナダ-ヨーロッパ) IBM EBCDIC (US-Canada-Euro)
1141 IBM01141 IBM EBCDIC (ドイツ-ヨーロッパ) IBM EBCDIC (Germany-Euro)
1142 IBM01142 IBM EBCDIC (デンマーク-ノルウェー-ヨーロッパ) IBM EBCDIC (Denmark-Norway-Euro)
1143 IBM01143 IBM EBCDIC (フィンランド-スウェーデン-ヨーロッパ) IBM EBCDIC (Finland-Sweden-Euro)
1144 IBM01144 IBM EBCDIC (イタリア-ヨーロッパ) IBM EBCDIC (Italy-Euro)
1145 IBM01145 IBM EBCDIC (スペイン-ヨーロッパ) IBM EBCDIC (Spain-Euro)
1146 IBM01146 IBM EBCDIC (UK-ヨーロッパ) IBM EBCDIC (UK-Euro)
1147 IBM01147 IBM EBCDIC (フランス-ヨーロッパ) IBM EBCDIC (France-Euro)
1148 IBM01148 IBM EBCDIC (国際対応-ヨーロッパ) IBM EBCDIC (International-Euro)
1149 IBM01149 IBM EBCDIC (アイスランド語-ヨーロッパ) IBM EBCDIC (Icelandic-Euro)
1200 utf-16 Unicode Unicode
1201 unicodeFFFE Unicode (ビッグエンディアン) Unicode (Big endian)
1250 windows-1250 中央ヨーロッパ言語 (Windows) Central European (Windows)
1251 windows-1251 キリル語 (Windows) Cyrillic (Windows)
1252 Windows-1252 西ヨーロッパ言語 (Windows) Western European (Windows)
1253 windows-1253 ギリシャ語 (Windows) Greek (Windows)
1254 windows-1254 トルコ語 (Windows) Turkish (Windows)
1255 windows-1255 ヘブライ語 (Windows) Hebrew (Windows)
1256 windows-1256 アラビア語 (Windows) Arabic (Windows)
1257 windows-1257 バルト語 (Windows) Baltic (Windows)
1258 windows-1258 ベトナム語 (Windows) Vietnamese (Windows)
1361 Johab 韓国語 (Johab) Korean (Johab)
10000 macintosh 西ヨーロッパ言語 (Mac) Western European (Mac)
10001 x-mac-japanese 日本語 (Mac) Japanese (Mac)
10002 x-mac-chinesetrad 繁体字中国語 (Mac) Chinese Traditional (Mac)
10003 x-mac-korean 韓国語 (Mac) Korean (Mac)
10004 x-mac-arabic アラビア語 (Mac) Arabic (Mac)
10005 x-mac-hebrew ヘブライ語 (Mac) Hebrew (Mac)
10006 x-mac-greek ギリシャ語 (Mac) Greek (Mac)
10007 x-mac-cyrillic キリル語 (Mac) Cyrillic (Mac)
10008 x-mac-chinesesimp 簡体字中国語 (Mac) Chinese Simplified (Mac)
10010 x-mac-romanian ルーマニア語 (Mac) Romanian (Mac)
10017 x-mac-ukrainian ウクライナ語 (Mac) Ukrainian (Mac)
10021 x-mac-thai タイ語 (Mac) Thai (Mac)
10029 x-mac-ce 中央ヨーロッパ言語 (Mac) Central European (Mac)
10079 x-mac-icelandic アイスランド語 (Mac) Icelandic (Mac)
10081 x-mac-turkish トルコ語 (Mac) Turkish (Mac)
10082 x-mac-croatian クロアチア語 (Mac) Croatian (Mac)
12000 utf-32 Unicode (UTF-32) Unicode (UTF-32)
12001 utf-32BE Unicode (UTF-32 ビッグエンディアン) Unicode (UTF-32 Big endian)
20000 x-Chinese-CNS 繁体字中国語 (CNS) Chinese Traditional (CNS)
20001 x-cp20001 TCA 台湾 TCA Taiwan
20002 x-Chinese-Eten 繁体字中国語 (Eten) Chinese Traditional (Eten)
20003 x-cp20003 IBM5550 台湾 IBM5550 Taiwan
20004 x-cp20004 文字放送 (台湾) TeleText Taiwan
20005 x-cp20005 Wang 台湾 Wang Taiwan
20105 x-IA5 西ヨーロッパ言語 (IA5) Western European (IA5)
20106 x-IA5-German ドイツ語 (IA5) German (IA5)
20107 x-IA5-Swedish スウェーデン語 (IA5) Swedish (IA5)
20108 x-IA5-Norwegian ノルウェー語 (IA5) Norwegian (IA5)
20127 us-ascii US-ASCII US-ASCII
20261 x-cp20261 T. 61 T.61
20269 x-cp20269 ISO-6937 ISO-6937
20273 IBM273 IBM EBCDIC (ドイツ) IBM EBCDIC (Germany)
20277 IBM277 IBM EBCDIC (デンマーク-ノルウェー) IBM EBCDIC (Denmark-Norway)
20278 IBM278 IBM EBCDIC (フィンランド-スウェーデン) IBM EBCDIC (Finland-Sweden)
20280 IBM280 IBM EBCDIC (イタリア) IBM EBCDIC (Italy)
20284 IBM284 IBM EBCDIC (スペイン) IBM EBCDIC (Spain)
20285 IBM285 IBM EBCDIC (UK) IBM EBCDIC (UK)
20290 IBM290 IBM EBCDIC (日本語カタカナ) IBM EBCDIC (Japanese katakana)
20297 IBM297 IBM EBCDIC (フランス) IBM EBCDIC (France)
20420 IBM420 IBM EBCDIC (アラビア語) IBM EBCDIC (Arabic)
20423 IBM423 IBM EBCDIC (ギリシャ語) IBM EBCDIC (Greek)
20424 IBM424 IBM EBCDIC (ヘブライ語) IBM EBCDIC (Hebrew)
20833 x-EBCDIC-KoreanExtended IBM EBCDIC (韓国語拡張) IBM EBCDIC (Korean Extended)
20838 IBM-Thai IBM EBCDIC (タイ語) IBM EBCDIC (Thai)
20866 koi8-r キリル語 (KOI8-R) Cyrillic (KOI8-R)
20871 IBM871 IBM EBCDIC (アイスランド語) IBM EBCDIC (Icelandic)
20880 IBM880 IBM EBCDIC (キリル文字ロシア語) IBM EBCDIC (Cyrillic Russian)
20905 IBM905 IBM EBCDIC (トルコ語) IBM EBCDIC (Turkish)
20924 IBM00924 IBM ラテン-1 IBM Latin-1
20932 EUC-JP 日本語 (JIS 0208-1990 および 0212-1990) Japanese (JIS 0208-1990 and 0212-1990)
20936 x-cp20936 簡体字中国語 (GB2312-80) Chinese Simplified (GB2312-80)
20949 x-cp20949 韓国 Korean-wansung-unicode Korean Wansung
21025 cp1025 IBM EBCDIC (キリル語セルビア-ブルガリア) IBM EBCDIC (Cyrillic Serbian-Bulgarian)
21866 koi8-u キリル語 (KOI8-U) Cyrillic (KOI8-U)
28591 iso-8859-1 西ヨーロッパ言語 (ISO) Western European (ISO)
28592 iso-8859-2 中央ヨーロッパ言語 (ISO) Central European (ISO)
28593 iso-8859-3 ラテン 3 (ISO) Latin 3 (ISO)
28594 iso-8859-4 バルト語 (ISO) Baltic (ISO)
28595 iso-8859-5 キリル語 (ISO) Cyrillic (ISO)
28596 iso-8859-6 アラビア語 (ISO) Arabic (ISO)
28597 iso-8859-7 ギリシャ語 (ISO) Greek (ISO)
28598 iso-8859-8 ヘブライ語 (ISO-Visual) Hebrew (ISO-Visual)
28599 iso-8859-9 トルコ語 (ISO) Turkish (ISO)
28603 iso-8859-13 エストニア語 (ISO) Estonian (ISO)
28605 iso-8859-15 ラテン 9 (ISO) Latin 9 (ISO)
29001 x-Europa Europa Europa
38598 iso-8859-8-i ヘブライ語 (ISO-論理) Hebrew (ISO-Logical)
50220 iso-2022-jp 日本語 (JIS) Japanese (JIS)
50221 csISO2022JP 日本語 (JIS-1 バイトカタカナを許可) Japanese (JIS-Allow 1 byte Kana)
50222 iso-2022-jp 日本語 (JIS-1 バイトカタカナを許可する-SO/SI) Japanese (JIS-Allow 1 byte Kana – SO/SI)
50225 iso-2022-kr 韓国語 (ISO) Korean (ISO)
50227 x-cp50227 簡体字中国語 (ISO-2022) Chinese Simplified (ISO-2022)
51932 euc-jp 日本語 (EUC) Japanese (EUC)
51936 EUC-CN 簡体字中国語 (EUC) Chinese Simplified (EUC)
51949 euc-kr 韓国語 (EUC) Korean (EUC)
52936 hz-gb-2312 簡体字中国語 (HZ) Chinese Simplified (HZ)
54936 GB18030 簡体字中国語 (GB18030) Chinese Simplified (GB18030)
57002 x-iscii-de ISCII デバナガリ文字 ISCII Devanagari
57003 x-iscii-be ISCII ベンガル語 ISCII Bengali
57004 x-iscii-ta ISCII タミール語 ISCII Tamil
57005 x-iscii-te ISCII テルグ語 ISCII Telugu
57006 x-iscii-as ISCII アッサム語 ISCII Assamese
57007 x-iscii-or ISCII オリヤー語 ISCII Oriya
57008 x-iscii-ka ISCII カンナダ語 ISCII Kannada
57009 x-iscii-ma ISCII マラヤーラム語 ISCII Malayalam
57010 x-iscii-gu ISCII グジャラート語 ISCII Gujarati
57011 x-iscii-pa ISCII パンジャブ語 ISCII Punjabi
65000 utf-7 Unicode (UTF-7) Unicode (UTF-7)
65001 utf-8 Unicode (UTF-8) Unicode (UTF-8)

参考URL
Encoding クラス