2013-02-12 19 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