文字コードに合ったEncodingオブジェクトを取得するEncoding.GetEncodingメソッドを使うEncodingクラスの静的プロパティを使うEncodingクラスのコンストラクタを呼び出すこの記事への評価、コメント目的の文字コードに合ったEncodingオブジェクトを取得する例えばテキストファイルを文字列(String型)として読み込む時、そのテキストファイルの文字コードが何であるかによって、適切なエンコーディング(注)を選択する必要があります。そのエンコーディングを表すのが、Encodingオブジェクトです。適切なEncodingオブジェクトを選択してテキストファイルを読み込まないと、文字化けします。注:「エンコーディング」とは、どのように文字列をバイト列に変換(エンコード)するかという方法のことです。ここでは、バイト列を文字列に変換(デコード)する方法を含めて「エンコーディング」と呼ぶことにします。同様に文字列をテキストファイルに書き込む時も、どのような文字コードで書き込むかによって適切なEncodingオブジェクトを選択する必要があります。ここでは、目的の文字コードに合ったEncodingオブジェクトを取得する方法について説明します。テキストファイルを読み込む方法は「文字コードを指定してテキストファイルを読み込む」で、テキストファイルに書き込む方法は「文字コードを指定してテキストファイルに書き込む」で説明していますので、ここでは説明しません。関連:文字コードを判別するEncoding.GetEncodingメソッドを使うEncoding.GetEncodingメソッドを使うことで、指定したエンコーディングのEncodingオブジェクトを取得することができます。この時、エンコーディングのコードページ名かコードページIDを指定する必要があります。コードページ名はString型で、コードページIDはInt32型で指定します。サポートしているエンコーディングをすべて取得する方法とその結果の例を、「サポートしているEncodingをすべて取得する」で紹介しています。日本語に関係したエンコーディングのコードページIDとコードページ名を以下に示します。Frameworkでネイティブにサポートされている訳ではなく、プラットフォームに依存しています。プラットフォームがサポートしていなければ、使用することができません。98の米国版などではサポートされていません。サポートされていない場合は、例外ArgumentExceptionがスローされます。補足:コードページ名は大文字と小文字を区別しないようです。shift_jis)」によると、Shift_JISとCP932の違いは、例えば0x8160の波線文字に現れます。この違いは、CP20932とCP51932、ISO-2022-JPとCP50220にも表れます。シフトJISのテキストファイルを作成する例を以下に示します。enc)sw.Write("こんにちは。enc);sw.Write("こんにちは。");sw.Close();Encodingクラスの静的プロパティを使うもっとお手軽な方法として、Encodingクラスの静的プロパティを使用する方法があります。Encodingクラスの静的プロパティには、よく使われるEncodingオブジェクトがあらかじめ幾つか用意されています。このようなプロパティには、以下のようなものがあります。環境によって違うエンコーディングを返すので、あまり使用しない方がよい。UTF-8(BOM付き)のテキストファイルを作成する例を以下に示します。System.Text.Encoding.UTF8)sw.Write("こんにちは。System.Text.Encoding.UTF8);sw.Write("こんにちは。");sw.Close();Encodingクラスのコンストラクタを呼び出すEncodingクラスは抽象クラスですが、UnicodeとASCIIに関するエンコーディングについては、Encodingクラスから派生した専用のクラスが公開されています。これらのコンストラクタを直接呼び出すことで、Encodingオブジェクトを作成することができます。このようなクラスには、以下のようなものがあります(MSDNからの抜粋です)。文字エンコーディングを表します。エンコーディングを表します。エンコーディングを表します。エンコーディングを表します。エンコーディングを表します。この方法には、大きなメリットがあります。mark)を付けないようにできることです(UTF7Encoding以外)。今まで紹介してきた方法では、必ずBOMが付きます。この方法では、無効な文字やバイトシーケンスがあったときに例外をスローさせるようにすることもできます(ASCIIEncoding、UTF7Encoding以外)。具体的には、UTF8Encodingでは1番目、UnicodeEncodingとUTF32Encodingでは2番目のパラメータがTrueの時BOMが付加し、Falseの時は付加しません。省略するとFalseになり、付加しません。省略するとFalseになり、エラーは出ません。UnicodeEncodingとUTF32Encodingでは、1番目のパラメータがTrueの時ビッグエンディアンバイト順を使用し、Falseの時はリトルエンディアンバイト順を使用します。省略するとFalseになります。補足:UTF7Encodingのコンストラクタには多くても1つのパラメータしかなく、これがTrueの時は、「!\|"#$%&*;<>{}[]=@^_`」という文字をBASE64で変換することなく、そのままにします。この方法で様々なEncodingオブジェクトを作成する例を以下に示します。VB.NETJavaScriptを有効にしてくださいコードを隠すコードを選択'BOMを付けない。無効なエンコーディングで例外をスローさせる。(UTF-8),65001,utf-8'リトルエンディアン。