文字コードを指定して出力

文字コードの異なるファイルを作成します。

前田稔の超初心者のプログラム入門

プログラムの説明

  1. Text File とは、C言語やC#のソースプログラムのように、文字コードを使って書かれたファイルのことを言います。
    文字コードには utf-8, utf-16, Shift_JIS など色々な文字コードが使われています。
    今回は文字コードの異なるファイルをC#で作成する方法を説明します。
    C#ではコード変換の機能が強化されていて、現在使われている殆どのコードに対応できるようになっています。
    文字コードの説明は Store Guid を参照して下さい。
  2. 文字コードの異なるファイルを作成する Write_Code.cs です。
    C:\DATA\C#\BAT のフォルダーに格納して下さい。
    /*★ 文字コードを指定してデーターを出力    前田 稔 ★*/
    using System;
    using System.IO;    // for File, StreamReader
    using System.Text;  // for Encoding
    
    class TextFileRead
    {
        public static int Main()
        {
            string[] file_name = {
                "C:\\DATA\\C#\\BAT\\utf8.txt", "C:\\DATA\\C#\\BAT\\utf8_bom.txt", "C:\\DATA\\C#\\BAT\\utf16.txt",
                "C:\\DATA\\C#\\BAT\\utf16LE.txt", "C:\\DATA\\C#\\BAT\\utf16BE.txt", "C:\\DATA\\C#\\BAT\\shift_jis.txt" };  
            string[] Tcode = { string.Empty, "utf-8", "utf-16", "utf-16", "utf-16BE", "shift_jis" };  
            string Text = "012ABCabc\r\nC#プログラム\r\n漢字のテスト\r\n";
            StreamWriter writer;
    
            writer = new StreamWriter(file_name[0], false);
            writer.Write(Text);
            writer.Close();
    Console.WriteLine("\n☆File Name : " + file_name[0]);
    
            for(int i=1; i<file_name.GetLength(0); i++)
            {   writer = new StreamWriter(file_name[i],false,Encoding.GetEncoding(Tcode[i]));
                writer.Write(Text);
                writer.Close();
    Console.WriteLine("\n☆File Name : " + file_name[i]);
            }
            return 0;
        }
    }
    
  3. Write_Code.cs を CLI でコンパイルします。
    Windows10 のスタートアイコンから[Microsoft Visual Studio 2005][Visual Studio 2005 コマンド プロンプト] を起動します。
    ここから起動するとコンパイル環境が設定されます。
    cd コマンドで C:\DATA\C#\BAT のフォルダーに移動します。
    csc Write_Code.cs でコンパイルします。
    Write_Code.exe で実行します。
    詳細は CLI で操作 を参照して下さい。
  4. 出力するファイル名を file_name[] 配列で定義しています。
    ファイル名 文字コード BOM
    utf8.txt utf-8 BOM 無し
    utf8_BOM.txt utf-8 BOM 有り
    utf16.txt utf-16 BOM 有り
    utf16LE.txt utf-16LE BOM 有り
    utf16BE.txt utf-16BE BOM 有り
    shift_jis.txt Shift_JIS BOM 無し
  5. Tcode[] で作成するファイルの文字コード定義します。
    utf-16 と utf-16LE は同じコードです。
        string[] Tcode = { string.Empty, "utf-8", "utf-16", "utf-16", "utf-16BE", "shift_jis" };  
    
  6. ファイルに書き出すデータを Text で定義します。
        string Text = "012ABCabc\r\nC#プログラム\r\n漢字のテスト\r\n";
    
  7. utf8.txt(BOM 無し)は、ループに含めずに Encoding を指定しないで書き出します。
        writer = new StreamWriter(file_name[0], false);
        writer.Write(Text);
    
  8. 残りをループで書き出します。
        for(int i=1; i<file_name.GetLength(0); i++)
        {   writer = new StreamWriter(file_name[i],false,Encoding.GetEncoding(Tcode[i]));
            writer.Write(Text);
    

超初心者のプログラム入門(C# Frame Work)