2012-11-27 43 views
1

正在读取从MS Excel创建的CSV文件。当我在记事本中打开它时看起来不错,但在Notepad ++中,我将编码从ANSI更改为UTF8,并且出现了一些非打印字符。从文件读取时出错 - 编码问题

具体为xFF。 - (十六进制值)

在我的C#应用​​程序中,这个字符在读取文件的时候会引起一个问题,所以有什么办法可以对此做一个String.replace('xFF', ' ');

更新

我发现SO此链接,事实证明这是回答我的问题,但不是我的问题。 Link

回答

2

而不是String.Replace,在读取文件时指定编码。

File.ReadAllText("test.csv",System.Text.UTF8Encoding) 
+0

既然我无法控制文件来自哪里,那么在读取之前可以确定编码吗? – IEnumerable

+1

不,你必须知道它。http://stackoverflow.com/a/90956/649524 – Tilak

+1

记事本如何做 - > http://blogs.msdn.com/b/oldnewthing/archive/2007/04/17/ 2158334.aspx – Tilak

1

猜猜你的Unicode表示是错误的。试试这个

string foo = "foo\xff"; 
foo.Replace('\xff',' '); 
+0

我不确定“破解”编码是件好事。我认为即使不完美,提拉克的答案也会更好。更好的办法是了解/理解OP的文件转换过程中使用的所有编码是什么。 – Guillaume