C#: テキストファイルの文字コードを判別する方法(2) テキストファイルをバイト型配列に読み込む
2016/06/11
[ad#top-1]
前回の記事からの続き
C#: テキストファイルの文字コードを判別する方法(1)
バイト型配列で読み込めば、先頭コードで文字形式を判別できるわけです。
Shift-JIS: 130~152
EUC: 161~207
UTF-8: 194~239
厄介なのは、194~207はEUCとUTF-8とでオーバーラップしているため、この間は判別不可となります。UTF-8は2バイトと3バイト文字があり、これもまた厄介。すべて2バイトだったら1個飛ばしでチェックをかければいいのですが、2個飛ばしと3個飛ばしを切り替えなければならないからです。具体的には以下のとおりとなります。
次にテキストファイルの読み込み方法ですが、コードは以下のとおりとなります。
FileStream fs = new FileStream(“C:\test.txt”,
FileMode.Open, FileAccess.Read);
byte[] bs = new byte[fs.Length];
fs.Read(bs, 0, bs.Length);
fs.Close();
ここで、配列bsにテキストファイルのバイト型コードがセットされました。あとはループで文字コードを評価していけば良いわけです。以下が簡単な判別方法です。決定したらbreak;でループから外れましょう。
for(int i=0; i<bs.Length; i++){
if(bs[i]>=130 && bs[i]<=152) //Shift-JISに決定
if(bs[i]>=161 && bs[i]<=193) //EUCに決定
次回は実際にコーディングしてみたいと思います。
[ad#ad-1]
スポンサーリンク