使用正确的编码加载文件

时间:2013-02-12 09:41:32

标签: c# encoding windows-8

我正在加载带有filepicker的文件,编码出错了。我没有得到正确的特殊字符。这是代码:

 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编码。如何使用正确的编码读取文件并显示我的特殊字符?

1 个答案:

答案 0 :(得分:3)

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

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

如果这不是文件的正确编码,那么您需要知道在创建文件的计算机上使用了哪种编码,并获取该编码以对其进行解码。例如:

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