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

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

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

プログラムの説明

  1. Text File とは、C言語やC#のソースプログラムのように、文字コードを使って書かれたファイルのことを言います。
    文字コードには utf-8, utf-16, Shift_JIS など色々な文字コードが使われています。
    今回は文字コードの異なるファイルをC#で入力する方法を説明します。
    C#ではコード変換の機能が強化されていて、現在使われている殆どのコードに対応できるようになっています。
    文字コードの説明は Store Guid を参照して下さい。
  2. 文字コードの異なるファイルを入力する Read_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\\Test\\utf8.txt", "C:\\data\\Test\\utf8_bom.txt", "C:\\data\\Test\\utf16.txt",
                "C:\\data\\Test\\utf16LE.txt", "C:\\data\\Test\\utf16BE.txt", "C:\\data\\Test\\shift_jis.txt" };  
            string Tcode = "utf-8";
            for(int i=0; i<file_name.GetLength(0); i++)
            {   if (!File.Exists(file_name[i])) return -1; //ファイルの有無をチェック
                StreamReader reader = new StreamReader(file_name[i],Encoding.GetEncoding(Tcode));
                string str = reader.ReadToEnd();
                reader.Close();
    Console.WriteLine("\n☆File Name : " + file_name[i]);
    Console.Write(str);
            }
            return 0;
        }
    }
    
  3. Read_Code.cs を CLI でコンパイルします。
    Windows10 のスタートアイコンから[Microsoft Visual Studio 2005][Visual Studio 2005 コマンド プロンプト] を起動します。
    ここから起動するとコンパイル環境が設定されます。
    cd コマンドで C:\DATA\C#\BAT のフォルダーに移動します。
    csc Read_Code.cs でコンパイルします。
    Read_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. 今回は、全てのファイルを Encoding で "utf-8" を指定して入力します。
    入力する文字コードは string Tcode = "utf-8"; で定義して変わることはありません。
        StreamReader reader = new StreamReader(file_name[i],Encoding.GetEncoding(Tcode));
    
  6. BOM が設定されているファイルは文字化けせずに正しく入力することが出来ました。
    utf8.txt は Tcode = "utf-8" なので正しく入力することが出来ます。
    shift_jis.txt を "utf-8" で入力すると文字化けします。
    Tcode = "shift_jis" にすれば shift_jis.txt は正しく読めるのですが、utf8.txt が文字化けします。

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