2011-12-03 173 views
1

我有一個程序輸入文本並使用多種函數對其進行排序,並且文本應該可讀取而不管格式如何,但是,當導入保存爲擴展ASCII編碼的文件時,任何超過127的字符都會被忽略。環顧四周,我似乎無法看出如何克服這一點。這些文件在UTF-8和Unicode中都能正常讀取。我已經嘗試將字符串轉換爲UTF-8,但是有問題的字母仍然只是以問號形式出現,而不是形狀。我可以看到這些值是正確的:0xBF表示û,但它們不被解釋爲值。轉換擴展ASCII/ANSI值

任何人都可以幫助我,我之前沒有做過很多這方面的工作。如果有幫助,我正在C#中工作。

我轉換這個樣子的當前代碼:

System.Text.UTF8Encoding u = new System.Text.UTF8Encoding(); 
byte[] asciiBytes = Encoding.UTF8.GetBytes(sd); 
sd = u.GetString(asciiBytes); 

哪裏sd是字符串。當我輸入這串,我不指定文本編碼:

string input = File.ReadAllText(fname); 
... 
parser(input); 
+0

如果您發佈了一些代碼,我們可以指出錯誤。還要具體說明所使用的編碼和I/O。 –

回答

2

我可以看到的值是否正確:爲0xBF爲û

這不是UTF-8編碼û,那將是一個兩字節的序列,0xC3 + 0xBB。顯然你猜對了文件編碼錯誤。西歐和美洲常見的Windows代碼頁1252中該字符的編碼是0xFB。在英國也是常見的,你的居住國。你是否反轉了數字?

改爲使用Encoding.Default。

+0

對不起,我的意思是0xFB。我已將其更改爲默認值,並且我的調試器顯示了我在Windows-1252中的默認值,但出現了一個問號(未知的char(0x3f)),而不是該字母。 – user646265

+1

精神回答得分1。你以某種方式不正確地使用Encoding.Default,就像不將它作爲ReadAllText()的第二個參數傳遞一樣。現在心理上有點低落。 –

+0

感謝您排序。你再次得到它,我沒有通過它作爲第二個論點,就像我說我以前在這個領域沒有做太多工作。再次感謝。 – user646265