[Tips][ファイル操作] テキストファイルを作成する(3) エンコーディングを指定する

StreamWriterクラスは、既定でUTF-8を使用してファイルを作成します。

任意のエンコーディングを指定するには、エンコーディングが指定できるコンストラクタ(下表)を使用します。

エンコーディングが指定可能なコンストラクタ
コンストラクタ 説明
StreamWriter(Stream, Encoding) 指定したエンコーディングと既定のバッファー サイズを使用して、指定したストリーム用の StreamWriter クラスの新しいインスタンスを初期化する。
StreamWriter(Stream, Encoding, Int32) 指定したエンコーディングとバッファー サイズを使用して、指定したストリーム用の StreamWriter クラスの新しいインスタンスを初期化する。
StreamWriter(String, Boolean, Encoding) 指定したエンコーディングと既定のバッファー サイズを使用して、指定したパス上の指定したファイル用の StreamWriter クラスの新しいインスタンスを初期化する。 ファイルが存在する場合は、ファイルを上書きするか、またはファイルの末尾に追加する。 ファイルが存在しない場合は、新しいファイルを作成する。
StreamWriter(String, Boolean, Encoding, Int32) 指定したエンコーディングとバッファー サイズを使用して、指定したパス上の指定したファイル用の StreamWriter クラスの新しいインスタンスを初期化する。 ファイルが存在する場合は、ファイルを上書きするか、またはファイルの末尾に追加する。 ファイルが存在しない場合は、新しいファイルを作成します。

任意のエンコーディングを指定するにはSysttem.Text名前空間にあるEncodingクラスGetEncodingメソッドを使用します。

GetEncodingメソッドは、コードページ名またはエンコーディング名を指定してエンコーディングを取得します。

VBの例

'Shift-Jisを表す文字列を指定してエンコーディングを取得する例
Dim enc As System.Text.Encoding = System.Text.Encoding.GetEncoding("Shift_Jis")

'Shift-Jisを表すコードページ値を指定してエンコーディングを取得する例
Dim enc As System.Text.Encoding = System.Text.Encoding.GetEncoding(932)

C#の例

// Shift-Jisを表す文字列を指定してエンコーディングを取得する例
System.Text.Encoding enc = System.Text.Encoding.GetEncoding("Shift_Jis");

// Shift-Jisを表すコードページ値を指定してエンコーディングを取得する例
System.Text.Encoding enc = System.Text.Encoding.GetEncoding(932);

参考までに、代表的なエンコーディング名とコードページ値を下記に示します。

エンコーディング名とコードページ値
エンコーディング名 コードページ値 説明
shift_jis 932 日本語(シフトJIS)
utf-16 1200 Unicode
x-mac-japanese 10001 日本語(Mac)
euc-jp 51932 日本語(EUC)
iso-2022-jp 50220 日本語(JIS)
utf-7 65000 Unicode(UTF-7)
utf-8 65001 Unicode(UTF-8)

以上を踏まえて、Shift-Jisでテキストファイルを作成する例を下記に示します。

VBの例

'Shift-JisでStreamWriterを作成する
Dim enc As System.Text.Encoding = System.Text.Encoding.GetEncoding("Shift_Jis")
Dim sw As New IO.StreamWriter("C:\Work\Test.txt", True, enc)

'テキストファイルに文字を書き込む
sw.WriteLine("AAA")
sw.WriteLine("BBB")
sw.Write("CCC")
sw.WriteLine("DDD")

'StreamWriterを閉じる
sw.Close()

C#の例

// Shift-JisでStreamWriterを作成する
System.Text.Encoding enc = System.Text.Encoding.GetEncoding("Shift_Jis");
System.IO.StreamWriter sw = new System.IO.StreamWriter(@"C:\Work\Test.txt", true, enc);

// テキストファイルに文字を書き込む
sw.WriteLine("AAA");
sw.WriteLine("BBB");
sw.Write("CCC");
sw.WriteLine("DDD");

// StreamWriterを閉じる
sw.Close();

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

This site uses Akismet to reduce spam. Learn how your comment data is processed.