C#(.Net)におけるエンコードのバグ?
複数のテキストファイルを読み込み、置換などの処理を加えた後に、文字コードはそのままで別名保存するアプリケーションを開発しています。
しかし、Encodingクラスを使って文字コードを変換するところでつまずきました。EUC-JPとShift_JISを変換するときだけ、一定の文字列が文字化け(あるいは脱字)してしまいます。それも必ず化けるわけではないようです。
以下、簡単なチェックの手順です。
まず、下記テキストを含むテキストファイルを作成します。ファイル名は「test1.txt」、文字コードはEUC-JPとします。
________________________
この文章は処理対象に含まれません。
この文章はダミーです。
この文章はこのファイルが正常に処理されるかどうかをチェックするために含まれています。
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
次に、下記コードでテキストファイルを読み込み、別名で保存します。
string Buffer=File.ReadAllText("test1.txt",Encoding.Unicode);
Encoding EncodingSrc=Encoding.GetEncoding("euc-jp");
byte[] b=Encoding.Unicode.GetBytes(Buffer);
b=Encoding.Convert(EncodingSrc,Encoding.Unicode,b);
Buffer=Encoding.Unicode.GetString(b);
File.WriteAllText("test2.txt",Buffer,EncodingSrc);
すると、「test2.txt」に脱字が発生します。
________________________
この文章は処理対にれせん。
この文章はダーです。
この文章はこのファイルが正常に処理されるかどうかをチェックするためにれていす。
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
かなり回りくどいコードですが、文字コードを取得したり、また元の文字コードに戻したりするためにこうなってしまいました。
代替策でもかまいませんので、ご教授のほど、よろしくお願いします。