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に置き換えることはできますが、それは実際には意味がありません。
- 元の文字列に126を超えるバイトが含まれていない場合は、すでにASCIIになっています
- 元の文字列に126を超える1つ以上のバイトが含まれている場合、それらのバイトは失われます
アップデート:
更新された質問に答えて、次のBinaryReader
ように使用できます。
BinaryReader reader = new BinaryReader(File.Open("foo.txt", FileMode.Open),
Encoding.GetEncoding(1252));