Probleme d'accents lors d'un POST d'un formulaire

Résolu
warenbe Messages postés 145 Date d'inscription dimanche 2 décembre 2001 Statut Membre Dernière intervention 10 septembre 2009 - 6 janv. 2006 à 00:29
vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 - 24 avril 2021 à 15:32
Yop Yop
me revoila avec mes questions habituelles
si vous vous souvenez de moi j'avais eu des problemes a une epoque pour l'envoi de fichier en post et tout
bon c'est resolu et maintenant je sais tuot faire
mais je voulais cette fois juste envoyer du texte en post comme un formulaire

le probleme c'est que des que je met des accents sur mon texte, sur la base sql du serveur je reçoit que des ? a la place des caracteres accentués!
:(

j'ai sniffé mon port 80 et j'ai vu que les packets contenaient aussi les ? a la place des accents

j'ai donc fais un petit "messagebox.show(texte)" pour voir si mon texte etait affiché avec des accents avant l'envoi et tout va bien a ce niveau la
donc j'en ai conclu que c'est lors de l'envoi du post que ça change

je ne vois cepandant pas de solutions :(

a l'aide!

voila mon code:



//envoi des données en POST à l'url http:***************.php
string texte = rttexte.Text + "\n(Commentaire)";
DateTime date = DateTime.Now;
string sdate = date.Year.ToString() + "-";
if (date.Month < 10)
sdate = sdate + "0" + date.Month.ToString() + "-";
else
sdate = sdate + date.Month.ToString() + "-";
if (date.Day < 10)
sdate = sdate + "0" + date.Day.ToString();
else
sdate = sdate + date.Day.ToString();

MessageBox.Show(texte); //ici je verifie que le champ "texte" soit bien avec des accents. jusque la tout va bien

//les donnees a poster au serveur
StringBuilder strData = new StringBuilder();
strData.Append("comments_auteur=" + tbauteur.Text);
strData.Append("&comments_texte=" + texte);
strData.Append("&news_id=" + "");
strData.Append("&comments_serie=" + tbserie.Text);
strData.Append("&comments_date=" + sdate);


//On transforme le tout en tableau de byte
byte[] dataToPost = new ASCIIEncoding().GetBytes(strData.ToString());

// On cree la requete Http
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create("http:*********.php");

//On specifie la commande a utiliser dans notre cas POST
// Envoi de donnes au programme situ l'URL spcifie
myRequest.Method = "POST";

//Le type de contenu du corps de la requte
myRequest.ContentType = "application/x-www-form-urlencoded";

//Longueur du corps de la requte
myRequest.ContentLength = dataToPost.Length;

//On ecris les donnee dans la requete
Stream myStream = myRequest.GetRequestStream();

// Envoie des donnees
myStream.Write(dataToPost, 0, dataToPost.Length);
myStream.Close();

//On recupere la reponse
WebResponse myResponse = myRequest.GetResponse();

//on cree un flux
Stream responseStream = myResponse.GetResponseStream();

//On instancie un objet de type streamreader
StreamReader streamReader = new StreamReader(responseStream);

//On lit la totalite du flux
string result = streamReader.ReadToEnd();

//on ferme les flux
streamReader.Close();
responseStream.Close();
myResponse.Close();
myStream.Close();

MessageBox.Show("Envoyé!");
this.Close();
A voir également:

8 réponses

warenbe Messages postés 145 Date d'inscription dimanche 2 décembre 2001 Statut Membre Dernière intervention 10 septembre 2009
9 janv. 2006 à 11:52
TROUVEEEE

Encoding u8 = Encoding.GetEncoding(28591);

apres j'envoi avec:
byte[] dataToPost = u8.GetBytes(strData.ToString());

et ZOUUUUUU c'est trop fort! :)
3
Macky92 Messages postés 1 Date d'inscription vendredi 23 avril 2021 Statut Membre Dernière intervention 23 avril 2021
23 avril 2021 à 15:36
je n'ai pas bien saisie la reponse. pouver etre plus precis.
0
vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 169 > Macky92 Messages postés 1 Date d'inscription vendredi 23 avril 2021 Statut Membre Dernière intervention 23 avril 2021
24 avril 2021 à 15:32
Bonjour
15 ans après je doute que vous allez avoir une réponse .
Surtout que la dernière intervention de warenbee sur le site date de 2009
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
6 janv. 2006 à 08:46
je pense que ton problème vient de l'encodage.

par défaut, sous windows, c'est unicode... mais sur l'internet, c'est iso-8859-1... donc pas vraiment la meme chose.

Sébastien FERRAND
[MVP C#]
0
warenbe Messages postés 145 Date d'inscription dimanche 2 décembre 2001 Statut Membre Dernière intervention 10 septembre 2009
6 janv. 2006 à 17:43
ok mais comment convertir d'unicode en iso-8859-1 ?
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
6 janv. 2006 à 18:25
En faisant

sr = new StreamReader(httpWResponse.GetResponseStream(), System.Text.Encoding.GetEncoding("iso-8859-1"));

Peut-être ??


<HR>

[Pub] http://www.csharpfr.com/auteurdetail.aspx?ID=13319 [\Pub]
C# forever
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Neo020585 Messages postés 178 Date d'inscription lundi 10 mars 2003 Statut Membre Dernière intervention 6 juillet 2009 4
7 janv. 2006 à 01:39
Salut,



A tout hasard, essai de voir si en remplacant tes accent par leur code cela fonctionne.

&eacute; pour le "é"

&eagrave; pour le "è"

&agrave; pour le "à"

...


Sinon, je te propose aussi une méthode un peu plus barbare :

avant d'envoyer ton message, tu le modifie tel que :

original : Mon chat est déjà allé jouer à l'école.

Transformé : Mon chat est d#ej#a all#e jouer #a l'#ecole.



Lorsque tu voudras récuperer ces données et les afficher, tu n'aura qu'à faire la fonction inverse.
Néo020585

La programmation, c'est l'art de découvrir
0
warenbe Messages postés 145 Date d'inscription dimanche 2 décembre 2001 Statut Membre Dernière intervention 10 septembre 2009
8 janv. 2006 à 15:20
vai tenter
je vous tiens au courant des solutions que j'ai trouvé
0
warenbe Messages postés 145 Date d'inscription dimanche 2 décembre 2001 Statut Membre Dernière intervention 10 septembre 2009
9 janv. 2006 à 09:57
é pour le "é"
&eagrave; pour le "è"
à pour le "à"

<<< remmplacer par le code ça ne marche pas. quand je regarde dans la base de donnée apres on ne voit meme plus le texte
apparement c'est le caractere & qui fait ça :(

sinon pour l'autre methode que tu me proposes elle me va pas car d'une part le texte est visible sur le net apres et donc je ne dois pas devoir modifier le
script php pour qu'il prenne en compte ces modifications
d'autre part, ça me parait "cochon" (barbare comme tu dis) :)


pour l'autre proposition:
En faisant
sr = new StreamReader(httpWResponse.GetResponseStream(), System.Text.Encoding.GetEncoding("iso-8859-1"));
Peut-être ??

ça c'est pour la reception de la reponse
a la limite m'en fous de al reception moi c'est lorsque j'envoi le string texte que je dois gerer ça
mais je vais essayer de trouver une solution qui y ressemble
0
warenbe Messages postés 145 Date d'inscription dimanche 2 décembre 2001 Statut Membre Dernière intervention 10 septembre 2009
9 janv. 2006 à 10:58
bon j'ai ete bete
puor encoder differement il suffit de changer la ligne:

byte[] dataToPost = new ASCIIEncoding().GetBytes(strData.ToString());
j'ai essayé avec unicode, utf8, utf7 utf32 mais rien a faire... ça marche pas

j'ai donc essayer de mixer ça avec les codes pour les accents (&eagrave etc)
mais rien n'y fais
si je suis en utf8 je suis avec des caracteres bizarres, sinon des des fois j'ai meme plus les lignes avec des accents..
etc :(

pffff je desespere :(
0
Rejoignez-nous