我有一個ANSI編碼的文件,我想將從文件讀取的行轉換爲ASCII。使用C#將ANSI文本文件轉換爲ASCII碼
如何在C#中執行此操作?
編輯:如果我使用 「BinaryReader在」 BinaryReader reader = new BinaryReader(input, Encoding.Default);
但讀者需要(流,編碼) 但 「流」 是一個抽象的!我應該在哪裏放置他將讀取的文件的路徑?
我有一個ANSI編碼的文件,我想將從文件讀取的行轉換爲ASCII。使用C#將ANSI文本文件轉換爲ASCII碼
如何在C#中執行此操作?
編輯:如果我使用 「BinaryReader在」 BinaryReader reader = new BinaryReader(input, Encoding.Default);
但讀者需要(流,編碼) 但 「流」 是一個抽象的!我應該在哪裏放置他將讀取的文件的路徑?
從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,但並沒有真正意義,因爲:
UPDATE:
針對更新的問題,你可以使用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
實際上是unicode在內存中時。
您可以使用Encoding.GetEncoding
來選擇不同的代碼頁。
好的答案,特別是指出你可以使用靜態File方法,而不需要直接涉及FileStreams或緩衝區。 – Noldorin 2009-04-09 12:14:49
爲什麼你認爲你想將它轉換爲ASCII?答案可能會揭示你實際上應該將其轉換爲... – Guffa 2009-04-09 13:54:26