读取文本文件时出现问题 - 不间断空格字符

时间:2011-01-19 10:12:44

标签: c# .net string character-encoding

我正在尝试使用以下行读取一些文本文件:

"WE BUY  : 10 000.00 USD"

首先我在二进制编辑器中打开了这个文件,在Windows-1251编码中,第13个字符(或者第12个基于0的C#索引)(千位分隔符)是“160十进制代码”或“十六进制中的A0代码”。

然而,在我使用File.ReadAllLines将此行读入字符串后 在调试器中,我可以看到该字符现在有65533个代码。

“lines [9] [12]65533' 'char”

我的电脑的默认编码 Encoding.Default 是“Windows-1251”。

怎么回事?

更新

尝试使用UTF-8编码打开文件,结果仍然相同。

更新2

问题是文件编码是8位,但调试器显示8位字符“A0”16位值65533。

1 个答案:

答案 0 :(得分:2)

一个参数File.ReadAllLines将假设输入为UTF-8,无论系统默认编码如何。

您还需要指定编码:

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

您可以从name获取Encoding.Default.WebName(“Windows-1252”是我从这里获得的,但请在本地查看。)