स्वीकार किए जाते हैं जवाब कहते हैं, StringWriter
UTF-16 (यूनिकोड) डिफ़ॉल्ट और डिजाइन कर रहा है। यदि आप अंत में यूटीएफ -8 स्ट्रिंग प्राप्त करके ऐसा करना चाहते हैं, तो इसे करने के लिए मैं आपको 2 तरीके दे सकता हूं:
समाधान # 1 (बहुत कुशल, बुरा अभ्यास नहीं, लेकिन नौकरी मिलती है किया गया): इसे एक टेक्स्ट फ़ाइल में डंप करें और इसे वापस पढ़ें, फ़ाइल फ़ाइल को हटाएं (शायद केवल छोटी फाइलों के लिए उपयुक्त है, अगर आप इसे भी करना चाहते हैं - बस यह दिखाना चाहता था कि यह किया जा सकता है!)
public static string SerializeObject<T>(this T value)
{
var serializer = new XmlSerializer(typeof(T));
var settings = new XmlWriterSettings
{
Encoding = new UTF8Encoding(true),
Indent = false,
OmitXmlDeclaration = false,
NewLineHandling = NewLineHandling.None
};
using(var xmlWriter = XmlWriter.Create("MyFile.xml", settings))
{
serializer.Serialize(xmlWriter, value);
}
XmlDocument xml = new XmlDocument();
xml.Load("MyFile.xml");
byte[] bytes = Encoding.UTF8.GetBytes(xml.OuterXml);
File.Delete("MyFile.xml");
return Encoding.UTF8.GetString(bytes);
}
समाधान # 2 (बेहतर, आसान, और अधिक सुरुचिपूर्ण समाधान!): कर की तरह तुम्हारे पास है, StringWriter
का उपयोग कर, लेकिन इसकीका उपयोगसंपत्ति UTF-8 में यह स्थापित करने के लिए:
public static string SerializeObject<T>(this T value)
{
var serializer = new XmlSerializer(typeof(T));
var settings = new XmlWriterSettings
{
Encoding = new UTF8Encoding(true),
Indent = false,
OmitXmlDeclaration = false,
NewLineHandling = NewLineHandling.None
};
using(var stringWriter = new StringWriter(Encoding.UTF8))
{
using(var xmlWriter = XmlWriter.Create(stringWriter, settings))
{
serializer.Serialize(xmlWriter, value);
}
return stringWriter.ToString();
}
}
की
संभव डुप्लिकेट (http://stackoverflow.com/questions/427725/ [कैसे XML करने के लिए अन्य है कि UTF-16 XmlWriter साथ कोई एन्कोडिंग विशेषता डाल करने के लिए?] कैसे करने के लिए डाल-एक एन्कोडिंग-विशेषता-टू-एक्सएमएल-अन्य-कि-utf-16-के साथ-xmlwriter) –
मैंने महसूस किया गया है कि यह एक शिकार है, इसलिए –