ヘッダー
Visual Basic サンプル集
VB.NET2002対応 VB.NET2003対応 VB2005対応 VB2008対応 VB2010対応 VB2012対応 VB2013対応 VB2015対応 VB2017対応 VB2019対応

使用可能なエンコーディングの一覧を取得する

2020/7/6

 

エンコーディングの一覧を取得する

VB.NET2002対応 VB.NET2003対応 VB2005対応 VB2008対応 VB2010対応 VB2012対応 VB2013対応 VB2015対応 VB2017対応 VB2019対応

For Each encoding In System.Text.Encoding.GetEncodings
    Debug.WriteLine("{0}({1})", encoding.Name, encoding.DisplayName)
Next

この例では下記のように出力されます。 → Debug.WriteLineが表示される場所

出力される内容は環境によって異なります。

iso-8859-1(Western European (ISO))
us-ascii(US-ASCII)
utf-16(Unicode)
utf-16BE(Unicode (Big-Endian))
utf-32(Unicode (UTF-32))
utf-32BE(Unicode (UTF-32 Big-Endian))
utf-7(Unicode (UTF-7))
utf-8(Unicode (UTF-8))

注意! .NET Coreまたは.NET 5以降の場合 System.Text.Encoding.RegisterProviderメソッドにより使用可能になったエンコーディングは一覧に含まれません。

 

エンコーディングの一覧を名前順で取得する

VB2008対応 VB2010対応 VB2012対応 VB2013対応 VB2015対応 VB2017対応 VB2019対応

Dim encodings = From encoding In System.Text.Encoding.GetEncodings
                Order By encoding.Name

For Each encoding In encodings
    Debug.WriteLine("{0}({1})", encoding.Name, encoding.DisplayName)
Next

 → Debug.WriteLineが表示される場所

注意! .NET Coreまたは.NET 5以降の場合 System.Text.Encoding.RegisterProviderメソッドにより使用可能になったエンコーディングは一覧に含まれません。

 

参考:RegisterProviderメソッドで使用可能になったエンコーディングの一覧も含めてエンコーディングの一覧を取得する

.NET Coreおよび.NET 5以降では、デフォルトではASCIIやUTF-8など8個のエンコーディングしか使用できません。shift_jisなど日本語のエンコーディングはこの中にありません。

.NET Core 3.0以降または.NET 5以降であればSystem.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance)を実行することでshift_jisなどを含めて追加のエンコーディングが使用できるようになります。それらの追加のエンコーディングの一覧を取得する方法は用意されていないようです。(※ .NET Core 2.1以前ではNuGetでSystem.Text.Encoding.CodePagesをインストールした上でRegisterProviderを実行することで追加のエンコーディングが使用できるようになります。)

この例は.NET Frameworkで使用可能だったエンコーディングを元に擬似的に使用可能なエンコーディングを列挙しますが、母集団が固定である点と例外を前提にしている点でお勧めできるものではありません。参考程度にご活用ください。

VB2017対応 VB2019対応

Dim possibilities = {"ASMO-708", "big5", "cp1025", "cp866", "cp875", "csISO2022JP", "DOS-720",
                     "DOS-862", "EUC-CN", "euc-jp", "EUC-JP", "euc-kr", "GB18030", "gb2312", "hz-gb-2312", "IBM00858",
                     "IBM00924", "IBM01047", "IBM01140", "IBM01141", "IBM01142", "IBM01143", "IBM01144", "IBM01145",
                     "IBM01146", "IBM01147", "IBM01148", "IBM01149", "IBM037", "IBM1026", "IBM273", "IBM277", "IBM278",
                     "IBM280", "IBM284", "IBM285", "IBM290", "IBM297", "IBM420", "IBM423", "IBM424", "IBM437", "IBM500",
                     "ibm737", "ibm775", "ibm850", "ibm852", "IBM855", "ibm857", "IBM860", "ibm861", "IBM863", "IBM864",
                     "IBM865", "ibm869", "IBM870", "IBM871", "IBM880", "IBM905", "IBM-Thai", "iso-2022-jp", "iso-2022-jp",
                     "iso-2022-kr", "iso-8859-1", "iso-8859-13", "iso-8859-15", "iso-8859-2", "iso-8859-3", "iso-8859-4",
                     "iso-8859-5", "iso-8859-6", "iso-8859-7", "iso-8859-8", "iso-8859-8-i", "iso-8859-9", "Johab",
                     "koi8-r", "koi8-u", "ks_c_5601-1987", "macintosh", "shift_jis", "us-ascii", "utf-16", "utf-16BE",
                     "utf-32", "utf-32BE", "utf-7", "utf-8", "windows-1250", "windows-1251", "Windows-1252", "windows-1253",
                     "windows-1254", "windows-1255", "windows-1256", "windows-1257", "windows-1258", "windows-874",
                     "x-Chinese-CNS", "x-Chinese-Eten", "x-cp20001", "x-cp20003", "x-cp20004", "x-cp20005", "x-cp20261",
                     "x-cp20269", "x-cp20936", "x-cp20949", "x-cp50227", "x-EBCDIC-KoreanExtended", "x-Europa", "x-IA5",
                     "x-IA5-German", "x-IA5-Norwegian", "x-IA5-Swedish", "x-iscii-as", "x-iscii-be", "x-iscii-de", "x-iscii-gu",
                     "x-iscii-ka", "x-iscii-ma", "x-iscii-or", "x-iscii-pa", "x-iscii-ta", "x-iscii-te", "x-mac-arabic",
                     "x-mac-ce", "x-mac-chinesesimp", "x-mac-chinesetrad", "x-mac-croatian", "x-mac-cyrillic", "x-mac-greek",
                     "x-mac-hebrew", "x-mac-icelandic", "x-mac-japanese", "x-mac-korean", "x-mac-romanian", "x-mac-thai",
                     "x-mac-turkish", "x-mac-ukrainian"}


'参考:この呼び出しがないと追加のエンコーディングは有効になりません。
'System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance)

For Each encodingName In possibilities
    Dim encoding As Encoding
    Try
        encoding = System.Text.Encoding.GetEncoding(encodingName)
    Catch ex As ArgumentException
        Continue For
    End Try

    Debug.WriteLine("{0}({1})", encoding.WebName, encoding.EncodingName)
Next

 → Debug.WriteLineが表示される場所