2014-04-13 62 views
0

我需要使用char編碼通過char讀取文本文件。如果我在那個文件aposthrope(')字符,然後我得到questionmark代替。我檢查了這個文件是否是ASCII碼,這樣就不會有問題了。StreamReader通過char編碼讀取

StreamReader reader = new StreamReader(this.path, Encoding.ASCII); 

while (!reader.EndOfStream) 
{ 
    char chr = (char) reader.Read(); 
    // if i read character ’ then the content of chr is: 63 '?' 
    // but i need aposthrope not questionmark 

} 
+1

此代碼工作正常。可能你的文件不是ASCII碼 –

+0

使用十六進制編輯器來確保'你的文件真的是29x(39)! – TaW

+0

@TaW問題已解決 - 該字符實際上是一些不同的字符。我應該檢查兩次。 – Pesha

回答

0

您的來源必須以不同的編碼格式保存。如果你想問號(63)更改爲一個單引號(39)所有你需要做的就是修改像這樣

StreamReader reader = new StreamReader(this.path, Encoding.ASCII); 
int c = 0; 
while (!reader.EndOfStream) 
{ 
    c=reader.Read() 
    char chr = c==63?(char)39:(char)c; 
} 

學到新的東西代碼:? : :是三元運算符,是一個非常不錯的速記對於這樣的事情。

(檢查條件)?(如果爲true結果)如有虛假:(導致)