Probleme d'accents lors d'un POST d'un formulaire [Résolu]

warenbe 145 Messages postés dimanche 2 décembre 2001Date d'inscription 10 septembre 2009 Dernière intervention - 6 janv. 2006 à 00:29 - Dernière réponse : warenbe 145 Messages postés dimanche 2 décembre 2001Date d'inscription 10 septembre 2009 Dernière intervention
- 9 janv. 2006 à 11:52
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();
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
warenbe 145 Messages postés dimanche 2 décembre 2001Date d'inscription 10 septembre 2009 Dernière intervention - 9 janv. 2006 à 11:52
3
Merci
TROUVEEEE

Encoding u8 = Encoding.GetEncoding(28591);

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

et ZOUUUUUU c'est trop fort! :)

Merci warenbe 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 119 internautes ce mois-ci

Commenter la réponse de warenbe
sebmafate 4947 Messages postés lundi 17 février 2003Date d'inscription 14 février 2014 Dernière intervention - 6 janv. 2006 à 08:46
0
Merci
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#]
Commenter la réponse de sebmafate
warenbe 145 Messages postés dimanche 2 décembre 2001Date d'inscription 10 septembre 2009 Dernière intervention - 6 janv. 2006 à 17:43
0
Merci
ok mais comment convertir d'unicode en iso-8859-1 ?
Commenter la réponse de warenbe
cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention - 6 janv. 2006 à 18:25
0
Merci
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
Commenter la réponse de cs_Bidou
Neo020585 178 Messages postés lundi 10 mars 2003Date d'inscription 6 juillet 2009 Dernière intervention - 7 janv. 2006 à 01:39
0
Merci
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
Commenter la réponse de Neo020585
warenbe 145 Messages postés dimanche 2 décembre 2001Date d'inscription 10 septembre 2009 Dernière intervention - 8 janv. 2006 à 15:20
0
Merci
vai tenter
je vous tiens au courant des solutions que j'ai trouvé
Commenter la réponse de warenbe
warenbe 145 Messages postés dimanche 2 décembre 2001Date d'inscription 10 septembre 2009 Dernière intervention - 9 janv. 2006 à 09:57
0
Merci
é 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
Commenter la réponse de warenbe
warenbe 145 Messages postés dimanche 2 décembre 2001Date d'inscription 10 septembre 2009 Dernière intervention - 9 janv. 2006 à 10:58
0
Merci
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 :(
Commenter la réponse de warenbe

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.