2013-02-13 89 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