Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Pb encodage de caractères

5 réponses
Avatar
fragmonster
Je fusionne un fichier xml et une feuille xslt tous les deux au format
UTF-8 dans une chaine de caract=E8re HTML. Je souhaiterais que cette
fusion g=E9n=E8re une chaine utf8.

Mais lorsque j'analyse le code HTML g=E9n=E9r=E9 je vois que la
transformation m'a g=E9n=E9r=E9 un tag <META http-equiv=3D"Content-Type"
content=3D"text/html; charset=3Dutf-16">

Pourquoi a t-il utilis=E9 ce charset?

Voici le code que j'utilise :
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
XslTransform xslt =3D new XslTransfom();
// Load de la feuille de style.
xslt.Load("news.xsl");

// Transformation du fichier xml dans la string HTMLoutput.
string HTMLoutput;
StringWriter writer =3D new StringWriter();
xslt.Transform(new XPathDocument("news40.xml"), null, writer, null);
HTMLoutput =3D writer.ToString();
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D

Y at-il un moyen de controler le format de sortie de xstl.Transform()?

5 réponses

Avatar
Fred
Dans son message
fragmonster nous dit :

Je fusionne un fichier xml et une feuille xslt tous les deux au format
UTF-8 dans une chaine de caractère HTML. Je souhaiterais que cette
fusion génère une chaine utf8.

Mais lorsque j'analyse le code HTML généré je vois que la
transformation m'a généré un tag <META http-equiv="Content-Type"
content="text/html; charset=utf-16">

Pourquoi a t-il utilisé ce charset?

Voici le code que j'utilise :
================================================ > XslTransform xslt = new XslTransfom();
// Load de la feuille de style.
xslt.Load("news.xsl");

// Transformation du fichier xml dans la string HTMLoutput.
string HTMLoutput;
StringWriter writer = new StringWriter();
xslt.Transform(new XPathDocument("news40.xml"), null, writer, null);
HTMLoutput = writer.ToString();
================================================ >
Y at-il un moyen de controler le format de sortie de xstl.Transform()?



Bonsoir,
AMHA, ce n'est pas le xslt.Transform qui s'occupe de cela mais plutôt le
StringWriter.
(il ya une propriété Encoding et vraisemblablement un constructeur
adapté à l'initialisation de cette propriété)
Je dirais que l'UTF-16 est l'encodage/charset d'une chaîne "brute".

--
Fred
http://www.cerbermail.com/?3kA6ftaCvT
Outlook Express et les News : http://foleide.free.fr/prmoe.htm
Avatar
fragmonster
Oui j'ai vu le Encoding du StringWriter, mais c'est une propriété en
lecture seule :/

Je l'ai affiché via un Console.WriteLine("encodag : "+writer.Encoding)
et ça m'a affiché un System.Text.UnicodeEncoding. Soit rien à voir
avec l'UTF-16 ... J'en perds mon latin
Avatar
Fred
Dans son message
fragmonster nous dit :

Oui j'ai vu le Encoding du StringWriter, mais c'est une propriété en
lecture seule :/

Je l'ai affiché via un Console.WriteLine("encodag : "+writer.Encoding)
et ça m'a affiché un System.Text.UnicodeEncoding. Soit rien à voir
avec l'UTF-16 ... J'en perds mon latin



Bonjour

Exact.

Ne faudrait-il pas passer par un streamwriter plutôt que stringwriter ?

Pour les chaînes :
http://msdn.microsoft.com/library/en-us/cpguide/html/cpconencodingbasetypes.asp

Autrement dit, il me paraît normal d'avoir UTF-16 pour un résultat en
chaîne de caractères.

L'UTF-8, est un encodage. Ce n'est plus la chaîne que tu envoies mais sa
transformée (flux d'octets).
Un memorystream servant à initialiser un streamwriter ?


--
Fred
http://www.cerbermail.com/?3kA6ftaCvT
Outlook Express et les News : http://foleide.free.fr/prmoe.htm
Avatar
fragmonster
En fait, je travaille sur une newsletter. La chaine HTML résultant de
la fusion entre mon xml et mon xsl est envoyée par email. Le problème
est que certains de nos abonnés on des caractères bizarres qui
apparaissent dans le message. Typiquement un pb d'encodage.

Lorsque j'analyse la source du message, celui est envoyé en
charset="iso-8859-1".

Si le HTML est codé en UTF-16, celà pourrait expliquer les
caractères eronnés.

Je souhaiterais harmoniser tout ça pour faire en sorte que les
encodages du mail et du code HTML soient les mêmes. Or le
MailMessage.BodyEncoding n'accèpte que :
Encoding.UTF8Encoding
Encoding.UTF7Encoding
Encoding.ASCIIEncoding
Encoding.UnicodeEncoding
Encoding.Default
Avatar
Fred
Dans son message
fragmonster nous dit :

En fait, je travaille sur une newsletter. La chaine HTML résultant de
la fusion entre mon xml et mon xsl est envoyée par email. Le problème
est que certains de nos abonnés on des caractères bizarres qui
apparaissent dans le message. Typiquement un pb d'encodage.

Lorsque j'analyse la source du message, celui est envoyé en
charset="iso-8859-1".

Si le HTML est codé en UTF-16, celà pourrait expliquer les
caractères eronnés.

Je souhaiterais harmoniser tout ça pour faire en sorte que les
encodages du mail et du code HTML soient les mêmes. Or le
MailMessage.BodyEncoding n'accèpte que :
Encoding.UTF8Encoding
Encoding.UTF7Encoding
Encoding.ASCIIEncoding
Encoding.UnicodeEncoding
Encoding.Default



Je vois plus clair. En fait certains de tes clients ont exactement le
problème que certains lecteurs de ces news ont avec les messages UTF-8
envoyés par le serveur MS. Remplacement des caractères accentués par des
séquences de 2 caractères. é pour é par exemple.
Si c'était un problème d'encodage (un flux UTF-8 spécifié comme de
l'ISO-8859-1) *tous* tes clients auraient le problème.

En fait, tu n'as pas à te préocuper de l'encodage dans la première
partie du traitement. Tu ne manipules que des chaînes (donc
Unicode/UTF-16). Et tu places ces chaînes dans le message. C'est ta
classe message qui gère l'émission dans l'encodage que tu lui spécifies
(iso-8859-15 par exemple).
Donc, je dirais que la seule chose à faire est de supprimer la balise
meta, l'encodage sera spécifié, comme tu l'as vu dans l'en-tête du
message.
A toi de faire attention de ne pas utiliser de caractères hors du jeu
iso-8859-15 (mais cela doit être déjà correct)
Désolé, je ne peux pas tester.

--
Fred
http://www.cerbermail.com/?3kA6ftaCvT
Outlook Express et les News : http://foleide.free.fr/prmoe.htm