DOBON.NET プログラミング道: .NET Framework, VB.NET, C#, Visual Basic, Visual Studio, インストーラ, ...

サポートしているEncodingをすべて取得する

テキストファイルに文字列を書き込む時や、テキストファイルから文字列を読み込む時には、テキストファイルの文字コードに合ったEncodingオブジェクトが必要です(詳しくは、「目的の文字コードに合ったEncodingオブジェクトを取得する」)。しかし現在の環境が目的のEncodingをサポートしているとは限りません。

サポートしているEncodingをすべて取得するには、Encoding.GetEncodingsメソッドを使用します。このメソッドは、EncodingInfoの配列を返します。

EncodingInfoからEncodingオブジェクトを取得するには、EncodingInfo.GetEncodingメソッドを使うと便利です。(または、EncodingInfo.CodePageプロパティで得られるコードページIDを使ってEncoding.GetEncodingメソッドを呼び出しても同じことができます。)

以下の例では、Encoding.GetEncodingsメソッドの結果をタブ区切りテキストファイルに書き込んでいます。

VB.NET
コードを隠すコードを選択
'結果をテキストファイルに書き込む
Dim sw As New System.IO.StreamWriter("C:\test\encs.txt")
sw.WriteLine("DisplayName" & vbTab & "CodePage" & vbTab & "Name")

'サポートしているすべてのエンコーディングを取得する
Dim eis As System.Text.EncodingInfo() = System.Text.Encoding.GetEncodings()

'エンコーディングの情報をファイルに書き込む
For Each ei As System.Text.EncodingInfo In eis
    sw.WriteLine("{0}" & vbTab & "{1}" & vbTab & "{2}", _
                 ei.DisplayName, ei.CodePage, ei.Name)
Next

'ファイルを閉じる
sw.Close()
C#
コードを隠すコードを選択
//結果をテキストファイルに書き込む
System.IO.StreamWriter sw = new System.IO.StreamWriter(@"C:\test\encs.txt");
sw.WriteLine("DisplayName\tCodePage\tName");

//サポートしているすべてのエンコーディングを取得する
System.Text.EncodingInfo[] eis = System.Text.Encoding.GetEncodings();

//エンコーディングの情報をファイルに書き込む
foreach(System.Text.EncodingInfo ei in eis)
{
    sw.WriteLine("{0}\t{1}\t{2}", ei.DisplayName, ei.CodePage, ei.Name);
}

//ファイルを閉じる
sw.Close();

このコードを.NET Frameork 4.5、Windows 8.1で実行した時の結果は、以下のようになりました。

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

注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。

  • このサイトで紹介されているコードの多くは、例外処理が省略されています。例外処理については、こちらをご覧ください。
  • Windows Vista以降でUACが有効になっていると、ファイルへの書き込みに失敗する可能性があります。詳しくは、こちらをご覧ください。
  • .NET Tipsをご利用いただく際は、注意事項をお守りください。