ANSIエンコードファイルがあり、ファイルから読み取った行をASCIIに変換したい。
C#でこれを行うにはどうすればよいですか?
EDIT:「BinaryReader」BinaryReader reader = new BinaryReader(input, Encoding.Default);
を使用した場合、このリーダーは(Stream、Encoding)を使用しますが、「Stream」は抽象です!そして、私は彼が読み取るファイルのパスをどこに置くべきですか?
ANSIはASCIIのスーパーセットであるため、ANSIからASCIIへの直接変換は常に可能とは限りません。
ただし、Encoding
を使用してUTF-8への変換を試すことができます。
Encoding ANSI = Encoding.GetEncoding(1252);
byte[] ansiBytes = ANSI.GetBytes(str);
byte[] utf8Bytes = Encoding.Convert(ANSI, Encoding.UTF8, ansiBytes);
String utf8String = Encoding.UTF8.GetString(utf8Bytes);
もちろん、UTF8をASCIIに置き換えることができますが、それは実際には意味がありません。
更新:
更新された質問に応じて、次のようにBinaryReader
を使用できます。
BinaryReader reader = new BinaryReader(File.Open("foo.txt", FileMode.Open),
Encoding.GetEncoding(1252));
基本的に、ファイルの読み取り/書き込み時にはEncoding
を指定する必要があります。例えば:
// read with the **local** system default ANSI page
string text = File.ReadAllText(path, Encoding.Default);
// ** I'm not sure you need to do this next bit - it sounds like
// you just want to read it? **
// write as ASCII (if you want to do this)
File.WriteAllText(path2, text, Encoding.ASCII);
いったんそれを読んだら、メモリ内ではtext
は実際にはユニコードであることに注意してください。
Encoding.GetEncoding
を使用して、さまざまなコードページを選択できます。