从内存流读取器使用UTF8编码

10

我想打开一个XML文件(来自zip存档),将其放入MemoryStream中,并创建一个StreamReader从该流中读取以将其放入GridView中。

我使用以下代码:

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);

我希望有人能提出解决我的问题的想法。


你的代码看起来毫无意义,实际上你没有使用读取器。DataSet.ReadXml()有许多重载,其中包括一个接受你的读取器的重载。 - Hans Passant
дҪ жІЎжңүдҪҝз”Ё StreamReader жқҘиҜ»еҸ–ж–Ү件гҖӮеңЁ ds.ReadXml и°ғз”ЁдёӯдҪҝз”Ёе®ғгҖӮ - John Willemse
固定的,对我的错误感到抱歉。 - flow
1个回答

21

尝试使用:

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

第三个参数是用于detectEncodingFromByteOrderMarks (msdn)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接