ठीक है, मैं यूटीएफ 8 टेक्स्ट फाइलों के साथ काम करने की कोशिश कर रहा हूं। मैं लगातार बीओएफ वर्णों से लड़ रहा हूं कि लेखक यूटीएफ 8 के लिए गिरते हैं, जो धारावाहिक और अन्य पाठ पाठकों सहित फ़ाइल को पढ़ने के लिए उपयोग करने के लिए मुझे बहुत कुछ भी उड़ाता है।यूटीएफ 8 फ़ाइल वर्णों की शुरुआत सेरियलाइज़र और पाठकों को तोड़ना
मैं डेटा की एक प्रमुख छह बाइट्स हो रही है:।
0xEF
0xBB
0xBF
0xEF
0xBB
0xBF
(अब है कि मैं इसे देख रहा हूँ, मुझे पता है वहाँ दो अक्षर है वहाँ है कि UTF8 बीओएफ मार्कर हूँ मैं दोगुना एन्कोडिंग? यह)?
यूटीएफ 8 पर सीरिएलाइज़र एन्कोड्स पर ध्यान दें, तो मेमोरी स्ट्रीम को यूटीएफ 8 के रूप में एक स्ट्रिंग मिलती है, तो मैं यूटीएफ 8 के साथ फाइल में स्ट्रिंग लिखता हूं ... बहुत सारी अनावश्यकता की तरह लगता है। विचार?
//I'm storing this xml result to a database field. (this one includes the BOF chars)
using (MemoryStream ms = new MemoryStream())
{
Utility.SerializeXml(ms, root);
xml = Encoding.UTF8.GetString(ms.ToArray());
}
//later on, I would take that xml and then write it out to a file like this:
File.WriteAllText(path, xml, Encoding.UTF8);
public static void SerializeXml(Stream output, object data)
{
XmlSerializer xs = new XmlSerializer(data.GetType());
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
settings.IndentChars = "\t";
settings.Encoding = Encoding.UTF8;
XmlWriter writer = XmlTextWriter.Create(output, settings);
xs.Serialize(writer, data);
writer.Flush();
writer.Close();
}
बिल्कुल सही! इसने मेरे प्रश्न का उत्तर दिया। मैं बीओएम के बिना फाइलें लिखने में सक्षम था। मैंने 'एनकोडिंग.यूटीएफ 8' का उपयोग करके सभी स्थानों को नए 'यूटीएफ 8 एन्कोडिंग (झूठी) 'के साथ बदल दिया। – Nathan