Page 1 sur 1

Problème accents dans autocomplétion AJAX

Posté : 15 nov. 2007, 15:19
par pierrot
Bonjour,
Je sais que ce sujet a été traité à divers endroit, mais je n'arrive pas à m'en sortir...
J'ai un champ en autocomplétion avec les départements français. Qd je tapes 'C', ça m'affiche bien les départements commençant par C, correctement écrits (ex: Corrèze). Mais si je continue de taper les lettres, j'ai un problème avec les accents. Pour Corrèze, dès que je tape "Corre" ou Corrè", le choix disparait.
J'ai un peu tout essayé avec les fonctions utf8_encode, decode, mais j'ai du mal à comprendre comment s'en servir.
Si qq'un pouvait m'expliquer la marche à suivre pour pouvoir taper "Corrè" et que Corrèze reste affiché comme choix, ca serait sympatoche :wink:
Merci

Posté : 15 nov. 2007, 15:23
par Berzemus
En quel formant les données transitent-elles ? Xml, Json, simple texte ?

Aussi, tu dois vérifier dans quel format ton script php reçoit les noms, comment JS les traite avant de les envoyer

Perso sur le projet que je travaille, j'utilise jquery et json, et je me rends compte que j'ai eu aucun souci jusque la ^-^

Sinon regarde du côté urlencode/decode, pour les variables envoyés.

Posté : 15 nov. 2007, 15:30
par pierrot
Les données proviennent d'une table Mysql codée en latin1_swedish_ci.
Le charset de mes scripts est du iso-8859-1.
En bidouillant, j'ai enfin réussi à taper "Corrè" et Corrèze reste bien en choix, mais j'avoue ne pas trop comprendre pourquoi. J'ai juste rajouté un utf8_encode dans mon while de mysql_fetch_assoc et ca marche mais c vraiment du bol.

Posté : 15 nov. 2007, 17:19
par icebreak
Un peu eu le même problème mais c'est parceque quelque soit le charset utilisé sur la page et sur la base de données, L'Ajax c'est une communication en UTF-8.
Donc il faut faire la conversion.

Moi je suis en Shift_js c'est à dire japonais sur toutes mon application, mais pour les appli AJAX, chuis obligé de faire une transformation avec la librairie mbstring.

Posté : 16 nov. 2007, 17:12
par Cyrano
Berzemus a évoqué une manière simple de procéder : utiliser JSON. Coté serveur, tu récupères tes données, tu les encodes avec json_encode() et tu les envoies en retour de la requête AJAX. Ensuite, coté PHP, tu les décodes en utilisant la classe qui va bien pour ça avec objJson.parse() (ou objJson est l'instance de la classe JSON JavaScript)

Pour la récupérer, voir ICI