2011-01-19 73 views
1

我想讀下面的行一些文本文件:問題閱讀文本文件 - 不間斷空格字符

"WE BUY : 10 000.00 USD" 

首先我已經打開二進制編輯該文件和13個字符(或12日基於0的C#索引)(千位分隔符)是Windows-1251編碼中的「160碼十進制」或「十六進制A0碼」。

但是,當我在調試器中使用File.ReadAllLines 將此行讀入字符串後,我可以看到該字符現在有65533個代碼。

「線[9] [12] 65533 '' 字符」

的默認編碼Encoding.Default用於我的PC是 「視窗-1251」。

怎麼回事?

UPDATE

Tryed打開使用UTF-8編碼,仍然相同的結果的文件。

UPDATE 2

的問題是,文件編碼爲8位,但調試器示出了用於8位字符的65533.

+1

它是ansi?什麼是輸入文件編碼?這個問題可能是因爲你用不同的方式看到同一個角色,在一個地方是13點,而在另一個地方 - 而不是13號。 – 2011-01-19 10:14:57

+0

Lex,我怎麼知道?看起來像'Windows 1251' – 2011-01-19 10:17:14

回答

2

的一個參數File.ReadAllLines將假設輸入「A0」的16位值是UTF-8 ,無論系統默認編碼。

爲別的,你需要指定編碼:

var lines = File.ReadAllLines(filename, Encoding.GetEncoding(name)); 

您可以從您Encoding.Default.WebName得到name(「視窗1252」是我來到這裏,但當地檢查)。