2013-02-12 42 views
1

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

+0

它在城域应用([MSDN](http://msdn.microsoft.com/de-de/library/windows/apps/br207852.aspx)) – 2013-02-12 09:44:06

回答

3

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

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

如果不是该文件的正确的编码,那么你需要知道哪些编码是创建该文件的计算机上使用,并获取该编码来解码它。例如:

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

THX一个文件选择器。 Encoding.Default在metro-apps中不可访问,但GetEncoding是。我只是不知道我必须使用哪种编码用于Microsoft CSV文件。我已经尝试了Windows-1252和ISO-8859-1,但在这两种情况下StreamReader都是空的。有没有人知道(德语)MS Excel CSV文件的正确编码? – 2013-02-12 10:23:23

+0

@JanHommes:您可以试试IBM852(中欧DOS)或Windows-1250中欧Windows)。 – Guffa 2013-02-12 12:52:42

+1

对我来说Encoding.GetEncoding(“Windows-1250”)做了一招,谢谢你们! – Depechie 2014-12-27 23:04:42