C# 加载编码正确的文件

C# 加载编码正确的文件,c#,encoding,windows-8,C#,Encoding,Windows 8,我正在用文件选择器加载一个文件,但编码出现了问题。我没有合适的特殊角色。代码如下: StorageFile file = await openPicker.PickSingleFileAsync(); if (file != null) { var stream = await file.OpenReadAsync(); var rdr = new StreamReader(stream.AsStream()); } 阅读效果很好,但编码效果不好。该文件作为ans

我正在用文件选择器加载一个文件,但编码出现了问题。我没有合适的特殊角色。代码如下:

 StorageFile file = await openPicker.PickSingleFileAsync();
 if (file != null)
 {
     var stream = await file.OpenReadAsync();
     var rdr  = new StreamReader(stream.AsStream());
 }
阅读效果很好,但编码效果不好。该文件作为ansi csv文件提供。我可以为StreamReader提供如下编码:

var rdr  = new StreamReader(stream.AsStream(),System.Text.Encoding.UTF8);

但是这也不起作用,
System.Text.Encoding.ANSI
编码也不存在。如何使用正确的编码读取文件并显示我的特殊字符?

您可以为系统指定当前的ANSI编码:

var rdr = new StreamReader(stream.AsStream(), System.Text.Encoding.Default);
如果这不是文件的正确编码,那么您需要知道在创建文件的计算机上使用了哪种编码,并获取该编码以对其进行解码。例如:

var rdr = new StreamReader(stream.AsStream(), System.Text.Encoding.GetEncoding("ibm850"));

它是Metro Apps()thx中的文件选择器。编码。默认值在metro应用程序中不可访问,但GetEncoding是。我就是搞不清楚我必须对Microsoft CSV文件使用哪种编码。我尝试过Windows-1252和ISO-8859-1,但在这两种情况下,StreamReader都是空的。有人知道(德语)MS Excel CSV文件的正确编码吗?@JanHommes:你可以试试IBM852(中欧DOS)或Windows-1250中欧Windows)。对我来说编码很好。GetEncoding(“Windows-1250”)成功了,谢谢大家!