Pb encodage XmlTextWriter

Signaler
Messages postés
219
Date d'inscription
jeudi 6 juillet 2006
Statut
Membre
Dernière intervention
7 septembre 2009
-
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
-
Salut,
j'ai un problème avec l'encodage d'un XmlTextWriter dont la source est un StringBuilder :

StringBuilder myStrBuild = new StringBuilder();
XmlTextWriter myXmlWriter = new XmlTextWriter(newStringWriter(myStrBuild ));
myXmlWriter.WriteStartDocument();

Mon problème est que l'encodage des caractères est UTF-16 et il me faut UTF-8, et dans le StringBuilder, le StringWriter ou le XmlTextWriter la propriété Encoding, lorsqu'elle est présente, est en lecture seule.

Alors comment faire pour créer un XmlTextWriter en utf-8 ?

Merci

10 réponses

Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
56
Salut,
Tu peux passer l'encoding voulu dans le constructeur de ton object XmlTextWriter

<hr />
-Blog-
Messages postés
219
Date d'inscription
jeudi 6 juillet 2006
Statut
Membre
Dernière intervention
7 septembre 2009

Y a pas de constructeur pour le StringWriter qui défini l'encoding, et y en a qu'un d'ailleur.
Messages postés
219
Date d'inscription
jeudi 6 juillet 2006
Statut
Membre
Dernière intervention
7 septembre 2009

NB : je mets pour le StringWriter.... mais je parle bien du constructeur du XmlTextWriter
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
56
Mais si, tu peux faire comme ceci:

XmlTextWriter



x =

new



XmlTextWriter
(

"myFile.xml"
, myEncoding);













<hr />
-Blog-
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
56
Je viens de penser au fait que tu utilises peut-être encore le framework 1 ou 1.1, dans ce cas je ne pourrais pas te dire quels sont les overloads disponible dans cette version du framework...

<hr />
-Blog-
Messages postés
219
Date d'inscription
jeudi 6 juillet 2006
Statut
Membre
Dernière intervention
7 septembre 2009

Le pb, c'est que je construit une classe ne modifiant pas forcement un fichier xml, elle dois servir et pour une page Web et pour un app Windows, et j'ecrit dans ce stringbuilder.
Messages postés
63
Date d'inscription
mercredi 9 février 2005
Statut
Membre
Dernière intervention
27 janvier 2009

Je travaille actuellement sous framework 1.1 et il y'a bien un Encoding.UTF8 c'est certain. Je regarderai mes declarations demain au taff, ici j'ai le FW2.

Aprés l'effort, le reconfort... http://ip2x.free.fr/tracks/part4
Messages postés
63
Date d'inscription
mercredi 9 février 2005
Statut
Membre
Dernière intervention
27 janvier 2009

XmlTextWriter m_xmlWriter = new XmlTextWriter(filename, Encoding.UTF8);

Wala mister.

Aprés l'effort, le reconfort... http://ip2x.free.fr/tracks/part4
Messages postés
219
Date d'inscription
jeudi 6 juillet 2006
Statut
Membre
Dernière intervention
7 septembre 2009

Je vais me répéter, mais dans le constructeur du XmlTextWriter qui prends un StringWriter, il n'y a pas possibilité de choisir d'Encoding.... et ce sur le .NET 2
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
56
Le constructeur ne prend pas un StringWriter mais un TextWriter.... Un StringWriter est un object qui utilises un StringBuilder en interne, et on ne peut pas spécifier d'encoding à un StringBuilder sauf erreur...

Tu peux bien entendu passer un StringWriter au constructeur mais dans ton cas ce n'est apparement pas la bonne solution. Pourquoi ne pas lui passer un StreamWriter?

<hr />
-Blog-