Webservice, accents et encoding

Signaler
Messages postés
2
Date d'inscription
mercredi 18 août 2004
Statut
Membre
Dernière intervention
18 août 2004
-
Yonel91
Messages postés
1
Date d'inscription
lundi 13 juin 2005
Statut
Membre
Dernière intervention
25 septembre 2009
-
Bonjour a tous,
voila mon problème : J'attaque en c# un webservice distant (je ne l'ai pas développé), et je récupère des string. Seulement, les accents sont remplacés par '??'. J'ai un peu tout essayé pour traduire ces ??, avec System.Text.Encoding et autre URLDecode, mais rien n'y fait.

Le WSDL du webservice est en UTF-8.

Le problème est assez bizarre puisqu'avec les mêmes appels (sans retraitements des chaines) en Java et Delphi, les accents apparaissent correctement !

Si kkun a la solution miracle pour récupérer ces accents, je suis preneur !

merci d'avance :)

7 réponses

Messages postés
6352
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
79
essaie qqch de ce genre là :

byte[] tmp = Encoding.Convert(Encoding.UTF8, Encoding.Default, Encoding.UTF8.GetBytes(machaine));
string machaine_convertie = Encoding.Default.GetString(tmp);


Cocoricoooooooo !!!!
Messages postés
2
Date d'inscription
mercredi 18 août 2004
Statut
Membre
Dernière intervention
18 août 2004

ca marche toujours pas, j'ai essayé avec tous les Encoding possibles, et surtout avec ISO-8859-1 (normalement le latin ca devrait passer !) et ca change absolument rien.

Je suis même allé voir le byte-code pour ces caractères, toujours le même 63 (normal, c'est celui du ? :))

Pareil en Unicode : 003f qui correspond à '?'

Apparement la chaine de caractères que je recois ne contient pas les bons caractères, donc normal si j'arrive pas à traduire tout ca.

Y a pas un procédé interne à C# qui traduit à la volée les caractères qu'il recoit, un peu comme dans Java ? Peut être qu'il utilise des configs internes, genre celles de IE, pour se configurer tout seul (comme un grand ... ou presque)

C'est quand même bizarre que personne n'ai eu ce problème ...

Je vais essayé de faire un webservice pour voir si ca fait pareil.

En tout cas merci pour ton aide
Messages postés
3
Date d'inscription
dimanche 12 janvier 2003
Statut
Membre
Dernière intervention
15 février 2005

tout simplement :


StreamReader toto =
new StreamReader("c:\\test.txt",System.Text.Encoding.Default);
Messages postés
25
Date d'inscription
vendredi 15 septembre 2006
Statut
Membre
Dernière intervention
26 mai 2009

4 ans après cette discussion je tombe sur le même problème, et rien a faire !!
quelle est la solution ???
car celles qu'ont données coq ou adrien  ne marchent pas sur visual basic 2008 !!!
comment transformer un é venant du web en é (code 63 en 233) sans avoir besoin de réinventer la poudre ????
(genre écriture d'un switch case et conversion de tous les accents )
Messages postés
1
Date d'inscription
samedi 17 mai 2003
Statut
Membre
Dernière intervention
14 avril 2009

Il faut faire attention au niveau de la convertion en bytes avant l'envoi.

System.Text.Encoding.Default.GetBytes(...)

et donc à la reception vous aurez:

StreamReader reader = new StreamReader(stream,Encoding.Default);
Messages postés
1
Date d'inscription
mercredi 8 août 2007
Statut
Membre
Dernière intervention
18 juin 2009

Bonjour Fleuve,
où est-ce que l'on peut intercepter les résultats pour mettre le StreamReader? Il me semble que la classe crée par VisualStudio pour gérer le WebService remplace les caractères accentués par des "?" et donc on a plus accès au résultat d'origine :(

Cordialement,

André
Messages postés
1
Date d'inscription
lundi 13 juin 2005
Statut
Membre
Dernière intervention
25 septembre 2009

J'ai mis objStreamReader = New StreamReader(fic, System.Text.Encoding.GetEncoding("WINDOWS-1252")) et ça a fonctionné pour moi, ça aidera peut-être quelqu'un d'autre...