2011-05-09 15 views
7

मैं एक्सएमएल एन्कोडिंग होना चाहते हैं:एक्सएमएल क्रमबद्धता और एन्कोडिंग

<?xml version="1.0" encoding="windows-1252"?> 

encoding="windows-1252" तरह एन्कोडिंग उत्पन्न करने के लिए मैं इस कोड लिखा था।

var myns = OS.xmlns; 
using (var stringWriter = new StringWriter()) 
{ 
    var settings = new XmlWriterSettings 
    { 
     Encoding = Encoding.GetEncoding(1252), 
     OmitXmlDeclaration = false 
    }; 
    using (var writer = XmlWriter.Create(stringWriter, settings)) 
    { 
     var ns = new XmlSerializerNamespaces(); 
     ns.Add(string.Empty, myns); 
     var xmlSerializer = new XmlSerializer(OS.GetType(), myns); 
     xmlSerializer.Serialize(writer, OS,ns); 
    } 
    xmlString= stringWriter.ToString(); 
} 

लेकिन मुझे अभी भी मेरी अपेक्षित एन्कोडिंग नहीं मिल रही है जो मुझे याद आ रही है? encoding="windows-1252"? जैसे एन्कोडिंग उत्पन्न करने के लिए कृपया मुझे मार्गदर्शन करें। मुझे अपने कोड में बदलने की क्या ज़रूरत है?

उत्तर

8

जब तक आप एक्सएमएल को सीधे String (StringBuilder या StringWriter के माध्यम से) आउटपुट करते हैं तो आपको हमेशा यूटीएफ -8 या यूटीएफ -16 एन्कॉन्डिंग मिलेंगे। ऐसा इसलिए है क्योंकि strings in .NET are internally represented as Unicode characters

उचित एन्कोडिंग प्राप्त करने के लिए आपको एक बाइनरी आउटपुट पर स्विच करना होगा, जैसे Stream

यहां एक त्वरित उदाहरण है:

var settings = new XmlWriterSettings 
{ 
    Encoding = Encoding.GetEncoding(1252) 
}; 

using (var buffer = new MemoryStream()) 
{ 
    using (var writer = XmlWriter.Create(buffer, settings)) 
    { 
     writer.WriteRaw("<sample></sample>"); 
    } 

    buffer.Position = 0; 

    using (var reader = new StreamReader(buffer)) 
    { 
     Console.WriteLine(reader.ReadToEnd()); 
     Console.Read(); 
    } 
} 

संबंधित संसाधन:

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