डेटाकंट्रैक्टसेरियलाइज़र WriteObject
विधि में ओवरलोड हैं जो Stream
या XmlWriter
(और XmlDictionaryWriter
) पर लिखते हैं। Stream
अधिभार यूटीएफ -8 में डिफ़ॉल्ट होगा, इसलिए आपको किसी अन्य का उपयोग करने की आवश्यकता होगी। एक एक्सएमएल राइटर इंस्टेंस का उपयोग करना जो यूटीएफ -16 में एक्सएमएल लिखता है, जो आपको चाहिए, ताकि आप जो भी कर सकते हैं, वह कर सकते हैं, या आप XmlDictionaryWriter.CreateTextWriter
द्वारा लौटाए गए लेखक का उपयोग कर सकते हैं जिसके लिए आप पैरामीटर के रूप में Encoding.Unicode
पास करते हैं।
public class StackOverflow_10089682
{
[DataContract(Name = "Person", Namespace = "http://my.namespace")]
public class Person
{
[DataMember]
public string Name { get; set; }
[DataMember]
public int Age { get; set; }
}
public static void Test()
{
MemoryStream ms = new MemoryStream();
XmlDictionaryWriter writer = XmlDictionaryWriter.CreateTextWriter(ms, Encoding.Unicode);
DataContractSerializer dcs = new DataContractSerializer(typeof(Person));
Person instance = new Person { Name = "John Doe", Age = 33 };
dcs.WriteObject(writer, instance);
writer.Flush(); // Don't forget to Flush the writer here
Console.WriteLine("Decoding using UTF-16: {0}", Encoding.Unicode.GetString(ms.ToArray()));
}
}
इस लिंक से आपको मदद कर सकता है: http://sedodream.com/CategoryView,category,DataContractSerializer.aspx – Rajesh