Problème d'accents avec un formulaire en POST

HybridKat Messages postés 32 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 28 septembre 2007 - 15 mars 2007 à 13:48
JeePI196 Messages postés 3 Date d'inscription mercredi 21 février 2007 Statut Membre Dernière intervention 30 mai 2007 - 30 mai 2007 à 17:48
Bonjour,

J'ai un problème avec mes accents dans ma page web et je ne comprends pas du tout pourquoi. C'est une page en ASP/AJAX avec un formulaire en POST. J'avais eu le même problème avec un formulaire en GET auparavant et j'avais règler le problème en mettant partout que c'était du iso-8859-1, mais maintenant que c'est en POST il ne reconnait plus les accents et me met par exemple é au lieu des é.

J'ai pourtant mis dans le meta de la page que c'était du iso, dans ma soumission en AJAX je dis encore que c'est du iso et dans la page ASP en arrière qui traite le formulaire j'ai encore une fois mit le charset en iso. Je en vois pas vraiment ce que je peux faire de plus, ni même pourquoi ça ne marche pas en POST alors qu'en GET ça fonctionnait #1.

Si quelqu'un avait une idée j'en serais très reconnaissant...

P.S: J'ai essayer de mettre tout en utf-8 à la place mais c'est pire, ça me fait des losanges avec un ? à la place.

8 réponses

HybridKat Messages postés 32 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 28 septembre 2007
15 mars 2007 à 21:07
J'ai oublier un truc aussi, je perds mes espaces aussi...

Donc en somme : ça m'enlève tous les espaces, ça mèle mes accents, ça fait aussi des problèmes sur certains caractères spéciaux. Et ceci seulement en POST, en GET ça passe super bien.
0
HybridKat Messages postés 32 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 28 septembre 2007
16 mars 2007 à 13:39
Mise à jour depuis la dernière fois :

J'ai fais plusieurs tests, tous inconcluants... J'ai ensuite modifier mon code pour le faire en GET (J'ai donc changer le mot POST pour GET et c'est presque tout) et tout marche #1. C'est vraiment en dehors de ma capacité de compréhension pour l'instant...

Je le laisserais bien en GET et j'oublierais tout ça, mais j'ai un gros formulaire avec 6 textarea donc la limite de 2000 caractères d'un GET est un problème...
0
HybridKat Messages postés 32 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 28 septembre 2007
19 mars 2007 à 13:50
Mise à jour :

J'ai réussis à localiser le moment où les accents se font massacrés sans pitié. J'ai afficher mes données en JavaScript juste avant de soumettre le formulaire et tout était parfait, ma page ASP en arrière qui reçoit les données les reçoit "corrompues". Je crois donc pouvoir déduire que c'est mon code AJAX qui est le problème... mais j'arrive vraiment pas à trouver ce qu'il y a de mal avec mon code. Je vous montre les lignes :

------------------------------------------
xmlHttp.open("POST",url,false);
xmlHttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded;charset=iso-8859-1');
xmlHttp.setRequestHeader("Content-length", data.length);
xmlHttp.send(data);
------------------------------------------

Je suis désolé de répondre aussi souvent à mon propre message, mais il faut vraiment que je trouve une solution (je cherche aussi depuis et je trouve rien du tout)
0
HybridKat Messages postés 32 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 28 septembre 2007
21 mars 2007 à 13:19
Mise à jour :

J'ai continué à chercher un peu (mon projet doit avancé quand même si je veux pas que mon patron me donne un coup de pied aux fesses :p) mais j'ai toujours pas trouver une solution. Je sais pas si c'est parceque je suis trop con pour rechercher la bonne chose mais on dirait que personne n'a jamais eu ce problème...

Si quelqu'un pouvait me donner un coup de main je serais très reconnaissant.
0

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

Posez votre question
cs_mogoye Messages postés 2 Date d'inscription jeudi 16 février 2006 Statut Membre Dernière intervention 29 mars 2007
21 mars 2007 à 14:03
J'ai le même type de probleme : Un serveur jetty empbaqué dans une appli java qui execute une servlet.
La servlet affiche un formulaire, jusque là tout va bien les accents sont bien gérés.
Je soumet mon formulaire la servlet reçoit les paramétres envoyés par le post.
Si je capture sur le reseau le post les caractéres sont bien encodés ISO-8859-1 mais java les décode mal lors de la lecture dans la requette.

Pour l'instant je cherche...
0
HybridKat Messages postés 32 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 28 septembre 2007
26 mars 2007 à 20:04
J'ai trouver une potentielle piste... En enlevant le (Response.CharSet = "iso-8859-1") ça semi-arranger le problème :p

En effet les accents et caractères spéciaux pour ma requête redeviennent normaux, mais les espaces sont toujours manquants... Et ça cause que tous les accents de la réponse (sauf ceux de ma requête) devienne des ? dans un losange.

Je commence vraiment à être désespéré...
0
cs_mogoye Messages postés 2 Date d'inscription jeudi 16 février 2006 Statut Membre Dernière intervention 29 mars 2007
29 mars 2007 à 09:22
De mon coté j'ai trouvé une solution radicale.
En comparant 2 servlets que nous avions dont une qui fonctionnait parfaitement, j'ai vu qu'une différence etait que j'utilisais jetty 6.1 alors que l'autre etait sous jetty 4.x ??.

J'ai fait un essai : faire tourner le code "defaillant" sous tomcat. Et là c'est nickel.
Si j'arrive à dégager un peu de temps je vais essayer de faire un test case simple afin de reproduire le problème pour m'assurer que c'etait bien jetty ou sa configuration qui posait problème.
0
JeePI196 Messages postés 3 Date d'inscription mercredi 21 février 2007 Statut Membre Dernière intervention 30 mai 2007 1
30 mai 2007 à 17:48
J'espere que ton probleme est réglé depuis... mais moi aussi j'ai vécu la même chose. J'ai perdu une matinée pour trouver une solution bien simple pourtant!

Lorsque tu envoies tes données en post assure toi d'utiliser la fonction "escape( )" pour transformer les caractères spéciaux.

xmlHttp.open("POST",url,false);
xmlHttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded;charset=iso-8859-1');
xmlHttp.setRequestHeader("Content-length", data.length);
xmlHttp.send(escape(data));

Ensuite dans ta page ASP qui est appellée, ajoute cette petite fonction que tu pourras appeller pour décoder tes données.

<script language=JScript runat=server> 
  function Decode(str)
  { 
      return unescape(str);
  }
</script>

Pour faire l'appel de cette fonction, rien ne change. C'est comme une fonction en ASP.

var maChaine = Decode(String(Request.Form));

Voila! Tout fonctionne très bien pour moi, même avec la "Evil String of Death"

TestString" a ' b < ' > ",!"/%$?$&?%*(()%/"!"/&?%$/"*&$/"?%&?-f¯Ñ112<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>

J'espère t'avoir aidé.
0
Rejoignez-nous