2013-02-13 16 views
7

मैं मेमोरीस्ट्रीम में एक एक्सएमएल फ़ाइल (ज़िप संग्रह से) खोलना चाहता हूं और स्ट्रीम स्ट्रीमर को इस स्ट्रीम को ग्रिड व्यू में डालने के लिए बनाना चाहता हूं।मेमोरीस्ट्रीम यूटीएफ 8 एन्कोडिंग से स्ट्रीम रीडर

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

मेरी एक्सएमएल फाइल एएनएसआई में encoded रहे हैं, तो यह पूरी तरह काम करता है:

मैं इस कोड का उपयोग करें। लेकिन जब मैं UTF8 में encoded फ़ाइलें लोड, यह विफल हो, यहां तक ​​कि मैं StreamReader ऐसे ही प्रारंभ:

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

मुझे आशा है कि किसी ने मेरी समस्या को हल करने में एक विचार होगा।

+0

आपका कोड थोड़ा समझ में आता है, तो आप वास्तव रीडर का उपयोग नहीं कर रहे हैं। DataSet.ReadXml() में बहुत सारे ओवरलोड हैं, जिनमें से एक आपके पाठक को लेता है। –

+0

आप फ़ाइल को पढ़ने के लिए 'StreamReader' का उपयोग नहीं कर रहे हैं। इसे 'ds.ReadXml' कॉल में प्रयोग करें। –

+0

तय, मेरी गलती के लिए खेद है – flow

उत्तर

17

उपयोग करके देखें:

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

तीसरे परम के लिए detectEncodingFromByteOrderMarks (msdn) है

+5

धन्यवाद लेकिन यह काम नहीं करता है :( – flow

संबंधित मुद्दे