我有一个ANSI编码的文件,我想将我从文件中读取的行转换为ASCII。
如何在C#中执行此操作?
编辑:如果我使用“BinaryReader”怎么办?
BinaryReader reader = new BinaryReader(input, Encoding.Default);
但是这个读者需要(流,编码)
但“流”是一个抽象!我应该把文件的路径放在哪里?
答案 0 :(得分:30)
从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);
当然你可以用ASCII替换UTF8,但是从那以后就没有用了:
<强>更新强>
在回答更新后的问题时,您可以像这样使用BinaryReader
:
BinaryReader reader = new BinaryReader(File.Open("foo.txt", FileMode.Open),
Encoding.GetEncoding(1252));
答案 1 :(得分:23)
基本上,您需要在读/写文件时指定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
实际上是在内存中的unicode。
您可以使用Encoding.GetEncoding
选择不同的代码页。