2011-03-14 18 views
7

का उपयोग करता है मेरे पास निम्न कोड है, जिसे मैं यूटीएफ -8 एन्कोडिंग प्रारूप का उपयोग कर एक्सएमएल डेटा आउटपुट करना चाहता हूं। लेकिन यह हमेशा UTF-16 में डेटा आउटपुट:XslCompiledTransform यूटीएफ -16 एन्कोडिंग

 XslCompiledTransform xslt = new XslCompiledTransform(); 

      xslt.Load(XmlReader.Create(new StringReader(xsltString), new XmlReaderSettings())); 

      StringBuilder sb = new StringBuilder(); 

      XmlWriterSettings writerSettings = new XmlWriterSettings(); 
      writerSettings.Encoding = Encoding.UTF8; 
      writerSettings.Indent = true; 

      xslt.Transform(XmlReader.Create(new StringReader(inputXMLToTransform)), XmlWriter.Create(sb, writerSettings)); 

उत्तर

10

XML आउटपुट में एक ऐसा हेडर धारा, नहीं एन्कोडिंग सेटिंग्स में निर्दिष्ट की एन्कोडिंग पर आधारित है शामिल होंगे। स्ट्रिंग्स 16 बिट यूनिकोड हैं क्योंकि एन्कोडिंग यूटीएफ -16 होगी।

writerSettings.OmitXmlDeclaration = true; 

फिर जब आप StringBuilder से परिणाम प्राप्त:

string xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n" + sb.ToString(); 
7

आप StringBuilder के स्थान पर एक MemoryStream उपयोग करते हैं, XmlWriter वैकल्पिक हल हैडर को दबाने और यह अपने आप को जोड़ के बजाय करने के लिए है में निर्दिष्ट एन्कोडिंग का सम्मान करेगा, क्योंकि MemoryStream में StringBuilder की तरह एक अंतर्निहित एन्कोडिंग नहीं है।

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