PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 27-12-2009 19:00:46

Ralph303
Membre
Lieu : St-Cyr l'Ecole
Inscription : 30-05-2009
Messages : 98
Site Web

Pb de unescape() dans un script php appelé par Ajax

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

#2 27-12-2009 20:55:04

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : Pb de unescape() dans un script php appelé par Ajax

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

#3 27-12-2009 22:02:22

Ralph303
Membre
Lieu : St-Cyr l'Ecole
Inscription : 30-05-2009
Messages : 98
Site Web

Re : Pb de unescape() dans un script php appelé par Ajax

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:


<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 

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

#4 27-12-2009 22:43:53

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : Pb de unescape() dans un script php appelé par Ajax

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

#5 27-12-2009 22:45:57

Ralph303
Membre
Lieu : St-Cyr l'Ecole
Inscription : 30-05-2009
Messages : 98
Site Web

Re : Pb de unescape() dans un script php appelé par Ajax

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é ! smile

Ralph303

Hors ligne

Pied de page des forums