2013-02-13 85 views
7

我想在一個MemoryStream中打開一個XML文件(從一個zip壓縮文件),並創建一個StreamReader來形成這個流,將它放入一個GridView中。MemoryStream的StreamReader UTF8編碼

我用這個代碼:

MemoryStream ms = new MemoryStream(); 
entry.Extract(ms); 
StreamReader reader = new StreamReader(ms); 
DataSet ds = new DataSet(); 
ds.ReadXml(reader); 
dataGridView1.DataSource = GlobalDs.Tables[0]; 

如果我的XML文件在ANSI編碼,它完美的作品。 但是當我加載UTF8編碼的文件,它失敗了,連我初始化StreamReader這樣的:

StreamReader reader = new StreamReader(ms, System.Text.Encoding.UTF8); 

我希望有人將有一個想法,解決我的問題。

+0

你的代碼沒有什麼意義,你是不是實際使用的閱讀器。 DataSet.ReadXml()有很多重載,包括帶你的讀者的重載。 – 2013-02-13 15:01:54

+0

您沒有使用'StreamReader'來讀取文件。在'ds.ReadXml'調用中使用它。 – 2013-02-13 15:10:36

+0

固定,對不起,我的錯誤 – flow 2013-02-13 15:16:54

回答

17

嘗試使用:

StreamReader reader = new StreamReader(ms, System.Text.Encoding.UTF8, true); 

第三個參數是爲detectEncodingFromByteOrderMarksmsdn

+5

謝謝,但它不工作:( – flow 2013-02-13 14:51:51