2015-11-26 74 views
1

我有一個錯誤的BOM(FF FE,但真正的文本編碼是ISO-8859-9)的文本文件。 我試試這個代碼:是否有可能在C#中正確讀取錯誤BOM的文本文件?

Encoding encoding = Encoding.GetEncoding("iso-8859-9"); 
string content = File.ReadAllText(@"D:\Documents\test.txt", encoding); 

但它不工作 - 該字符集被打破。 任何人都可以幫我讀這個文件嗎?

+0

刪除BOM然後嘗試。 –

+0

你的意思是「它不工作」,*正是*?如果只是前兩個字符不正確,只需使用Substring即可。 –

+0

該代碼應該可以工作,但是如果所有的編碼都是錯誤的,那麼在開頭就會得到兩個垃圾字符,那麼它的編碼就不同了。 – Gusman

回答

0

正如Adriano在他的評論中已經提到的那樣,您可能需要跳過文件的前兩個字節。這可以通過使用

byte[] rawdata = File.ReadAllBytes("..."); 
byte[] correctedRawdata = rawdata.Skip(2).ToArray(); 
Encoding encoder = Encoding.GetEncoding("iso-8859-9"); 

string text = encoder.GetString(correctedRawdata); 
+0

是的,@Adriano是對的:)謝謝! – TonyCheckano

相關問題