Visual Basic サンプル集 |
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Visual Basic 中学校 > Visual Basic サンプル集 > Visual Basic サンプル集目次 >
使用可能なエンコーディングの一覧を取得する
2020/7/6
エンコーディングの一覧を取得する
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メソッドにより使用可能になったエンコーディングは一覧に含まれません。
エンコーディングの一覧を名前順で取得する
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 |
注意! .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で使用可能だったエンコーディングを元に擬似的に使用可能なエンコーディングを列挙しますが、母集団が固定である点と例外を前提にしている点でお勧めできるものではありません。参考程度にご活用ください。
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 |