Vous n'êtes pas identifié(e).
Pages :: 1
Bonsoir,
j'ai remarqué que qd je passais des arguments qui contiennent des caractères accentués à un script php via une requête Ajax, ça ne marchais pas.
J'ai donc utilisé la fonction escape...
Le pb, c'est que qd je récupère l'argument dans mon script PHP avec $_GET['value'], les caractères accentués ont été remplacés par des '?'...
Et encore, seulement sur mon serveur local avec Wamp.
Sur mon hébergeur, l'accent et ce qui le suit sont purement et simplement effacés...
Logiquement, il faut utiliser unescape($_GET['value']); pour récupérer les accents.
Mais je suis dans un script PHP, et la fonction unescape n'existe pas en PHP.
Je sais utiliser des variables PHP dans un JavaScript, mais pas récupérer des variables JavaScript dans un script PHP.
Comment faut-il faire ?
Merci d'avance !
Ralph303
Dernière modification par Ralph303 (27-12-2009 19:14:04)
Hors ligne
Cela ressemble à un problème d'encodage.
De base PHP utilise de l'utf8(enfin pas toujours il me semble car c'est modifiable dans le php.ini ou bien dans le http.conf...), de plus le navigateur utilise un encodage qui lui est aussi propre (dans ton entête html).
Je ne suis pas expert en la matière mais compares ces deux encodages là, tu découvriras peut être qu'ils sont différents ou autre.
Hors ligne
Ce dont je suis sûr, c'est que mon hébergeur utilise utf-8.
J'ai donc, comme tu m'as dit, essayé de mettre le charset à utf-8 dans mon en-tête html:
Et ça me supprime toujours le premier accent et ce qui suit...
Mais faut-il utiliser escape() ?
Ralph303
Dernière modification par Ralph303 (27-12-2009 22:12:03)
Hors ligne
J'ai lu de nombreux articles et ta fonction est à proscrire pour les encodages d'url apparemment.
Ils conseillent d'utiliser encodeURI().
Je n'ai pas trouvé d'explications mais il y a fort à parier que c'est la fonction qui te pose problème.
Par exemple elle ne convertie correctement que si les caractères ont un équivalent ASCII. Normalement c'est le cas des "é" et autres, enfin après cela dépend de la table ASCII standard...
Hors ligne
J'ai résolu le pb en recherchant dans le forum de commentcamarche.net:
Il faut bien utiliser escape() pour encoder les caractères accentués dans la fonction Ajax, et utf8_encode($_GET['value']) dans le script PHP
appelé.
Merci pour la piste xTG, encore une fois tu m'a bien aidé !
Ralph303
Hors ligne
Pages :: 1