Problème accent en AJAX (pas les classiques ?) [Résolu]

Signaler
Messages postés
9
Date d'inscription
vendredi 14 février 2003
Statut
Membre
Dernière intervention
23 février 2006
-
Messages postés
36
Date d'inscription
vendredi 28 avril 2006
Statut
Membre
Dernière intervention
31 janvier 2011
-
Bonjour, j'ai codé des formulaires en AJAX supportant plusieurs pages et d'autres fonctionnalité. Un jour je me suis aperçu que tous les caractères accentués ne passait pas.
Hop google, recherche, hop plein de réponse... mais toutes (quasi) pour un problème avec des ? à la place de é è ç (par exemple) qu'on peut corriger avec un htmlentities() (en php).

Or à mon grand malheur, é è et ç donne é Ú ç. Les accents sont bien conservés tant que je suis sur l'ajax, mais dès que je les rentre dans la base de données ca foire. J'ai bien vérifie tous les encodages des différentes pages.

Donc est ce qql1 connait la cause de ce problème d'encodage, et quelle en serai la solution.

merci d'avance

10 réponses

Messages postés
9
Date d'inscription
vendredi 14 février 2003
Statut
Membre
Dernière intervention
23 février 2006

Bon j'ai reussi à resoudre mon problème apres enormement de test.
Je post au cas ou qql en aurait besoin plus tard.

J'avais fait bcp de tests et le resultat n'était toujours pas bon même si ma requete avait une tres bonne tête (les accents bon), sur la même page, juste apres j'avais fait une insertion basique pour voir si cela plantait aussi. Et bah non cela marchait.
Toujours un prob d'encodage quoi.

La solution a été de traiter la requete avec utf8_decode() voila.
Donc ca marche mais sur mon prob perso, j'ai toujours des zones d'ombres :/
Messages postés
559
Date d'inscription
jeudi 25 juillet 2002
Statut
Membre
Dernière intervention
5 septembre 2007
1
Ca vient de la base et de son système d'encodage, non ? :o)
Tu utilises quoi comme base ?

je parie sur : MySQL encodage latin-1 ?
Messages postés
9
Date d'inscription
vendredi 14 février 2003
Statut
Membre
Dernière intervention
23 février 2006

exact oui, si c'est ce problème d'interclassement, lequel dois je mettre ?
Messages postés
559
Date d'inscription
jeudi 25 juillet 2002
Statut
Membre
Dernière intervention
5 septembre 2007
1
utf8_general_ci ;o)
Messages postés
9
Date d'inscription
vendredi 14 février 2003
Statut
Membre
Dernière intervention
23 février 2006

Erf cela ne résout pas tout, j'ai testé et cela n'a pas bougé d'un pouce, j'ai testé plusieurs encodage différent pour mon fichier html de base. Rien ne bouge. En revenche, quand je force un encodage dans le fichier "ajax" appelé par header('Content-Type: text/html; charset=ISO-8859-1;'); les accents ne sont toujours pas bon dans la DB mais ne le sont même plus quand je rafraichi mon formulaire ....
Messages postés
559
Date d'inscription
jeudi 25 juillet 2002
Statut
Membre
Dernière intervention
5 septembre 2007
1
il ne traduit peut-etre pas les anciens champs...

Sans ca c'est Ajax qui est particulier et qui fait de l'unicode...
Messages postés
559
Date d'inscription
jeudi 25 juillet 2002
Statut
Membre
Dernière intervention
5 septembre 2007
1
tu la vois ou ta requete ?
fais un alert de ta requete en javascript pour voir...
Messages postés
9
Date d'inscription
vendredi 14 février 2003
Statut
Membre
Dernière intervention
23 février 2006

Nan c'est bon ca marche.
L'ajax dans mon cas ne chargais pas des données à utiliser dans un formulaire mais tout un pan de page WEB (une page de mon formulaire dans mon cas). Donc je pouvais sans prob faire un echo et visualiser la requete.

voila
Messages postés
1
Date d'inscription
vendredi 14 novembre 2003
Statut
Membre
Dernière intervention
25 juillet 2007

J'ai eu le meme probleme pour l'asp.net lorsque j'utilise ajax.
J'ai résolu le probleme en ajoutant dans le web.config cette ligne :
<

globalizationrequestEncoding="
utf-8"
responseEncoding="
iso-8859-1"
culture="
fr-FR"
uiCulture="
fr"
/>

lexxus
Messages postés
36
Date d'inscription
vendredi 28 avril 2006
Statut
Membre
Dernière intervention
31 janvier 2011

Merci beaucoup...
j'ai egalement eu le problème et utf8_decode() à résolut le truc.


You can do it...