2011-11-11 50 views
17

我無法讀取這些特殊字符 我試過這樣如何讀取特殊字符像E,A等人在C#

1路#

string xmlFile = File.ReadAllText(fileName); 

第二路#

FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read); 
StreamReader r = new StreamReader(fs); 
string s = r.ReadToEnd(); 

但是這兩個語句都不理解這些特殊字符。 我該如何閱讀?

UPDATE ###

我也嘗試所有的編碼與

string xmlFile = File.ReadAllText(fileName, Encoding.); 

,但還是不明白,這些特殊字符。

+1

你怎麼知道你的程序是不接受這些字符?你在跟他們做什麼?如果你將他們吐回到控制檯,可能是因爲你的終端沒有正確顯示它們,但你正在閱讀它們。 – mpen

+1

什麼是不正確讀取?顯示一行樣本文本,其中包含錯誤讀取的數據,您觀察到的結果,您期望的結果以及您如何進行觀察。 –

回答

40

有作爲「特殊字符」沒有這樣的事。這些可能是從latin1集擴展ascii字符(iso-8859-1)。 你可以閱讀那些通過顯式編碼的流讀取器(否則將承擔UTF8)

using (StreamReader r = new StreamReader(fileName, Encoding.GetEncoding("iso-8859-1"))) 
    r.ReadToEnd(); 
+1

非常感謝。 你解決了我的問題。 – kevin

+2

string [] lines = File.ReadAllLines(fileName,System.Text.Encoding.GetEncoding(「iso-8859-1」));也很完美 –

3
StreamReader sr = new StreamReader(stream, Encoding.UTF8) 
+0

StreamReader默認使用UTF8。 –

+0

是的,我知道。但我試過閱讀一個包含口音等文件的文本,並返回它像這樣:??例如,而不是「á」。 我將編碼設置爲utf8(如這裏所建議的),這工作得很好。 – Kakashi

+0

嗯我不知道...我將不得不看看代碼和實際文件,看看那裏發生了什麼。但是根據這個默認情況下使用UTF8編碼的http://msdn.microsoft.com/en-us/library/f2ke0fzy.aspx StreamREader init,就我所知,情況一直如此。 –

相關問題