2011-03-14 15 views
7

UTF-8 kodlama formatını kullanarak xml verilerini vermek istediğim şu koda sahibim. ama her zaman UTF-16 verileri verir:XslCompiledTransform, UTF-16 kodlamasını kullanır

 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)); 

cevap

10

XML çıkış akışı değil, ayarlarında belirtilen kodlama kodlanmasına dayanan bir başlık içerir. Dizeler 16 bit unicode olduğundan kodlama UTF-16 olacaktır. Eğer StringBuilder yerine bir MemoryStream kullanıyorsanız,

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

XmlWriter:

writerSettings.OmitXmlDeclaration = true; 

Sonra StringBuilder sonucunu alınca: geçici çözüm başlığını bastırmak yerine kendiniz eklemektir MemoryStream, StringBuilder gibi bir iç kodlamaya sahip olmadığından, XmlWriterSettings'da belirttiğiniz kodlamaya uymayacaktır.

İlgili konular