Bonjour,
En faite j'ai un souci avec la classe XslCompiledTransform car je n'arrive pas a sortir avec l'encoding que je souhaite quoique je mette il me sort toujours avec UTF-16 et moi je veux de l'UTF-8.
Comment faire?
Voici mon code qui marche nickel mais renvoye en UTF-16
Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 private string transformto(XmlDocument Infopath, string Lang, XmlDocument SortXSLT) { XPathNavigator XInfopath = InfopathXml.CreateNavigator(); //Création du lecteur XML XmlNodeReader XSLTDocumentReader = new XmlNodeReader(InfopathXml); //Création du transformateur XSLT XslCompiledTransform xslt = new XslCompiledTransform(); xslt.Load(SortXSLT, XsltSettings.Default, null); //là où sera enregistré la transformation StringBuilder TransformOutput = new StringBuilder(); //paramètre d'écriture du fichier transformé XmlWriterSettings settings = new XmlWriterSettings(); //paramètre un peu spécial, consultez msdn settings.ConformanceLevel = ConformanceLevel.Auto; XsltArgumentList lst = new XsltArgumentList(); lst.AddParam("Lang", "", Lang); //xslt.OutputSettings correspond aux paramètres <xsl:output> dans votre fichier XSL XmlWriter htmlDoc = XmlWriter.Create(TransformOutput, xslt.OutputSettings); xslt.Transform(XSLTDocumentReader, lst, htmlDoc, new XmlUrlResolver()); return TransformOutput.ToString(); }
Ce que je comprend pas c'est d'ou viens c'est encoding car dans mon XML et mon XSLT c'est du UTF-8 et la balise xsl:output à bien son attribut encoding a UTF-8.
A voir le problème vient de XmlWriter qui ne veux pas d'un autre encoding
que UTF-16 (que se soit spécifier via xslt.OutputSettings ou via une classe XmlWriterSettings). J'ai déjà beaucoup chercher et vu que beaucoup de personne on le même problème que moi mais je n'aie trouvé aucune réponse.
Merci pour votre aide
Partager