2011-01-19 87 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”是我来到这里,但当地检查)。