|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité régulier
![]() |
Bonjour à tous,
J'ai un soucis avec la fonction urlencode, lorsqu'elle traite une donnée venant d'un formulaire via la méthode post. les caractères spéciaux ne sont pas encodés correctement genre ï, ä, ... J'ai ce problème sur mon serveur, mais pas en local ! Je n'arrive pas à trouver la parade pour que ça fonctionne correctement... en local j'ai un wamp avec : Apache/2.2.6 (Win32) PHP/5.2.5 sur mon serveur réel : Apache/2.2.3 (Debian) PHP/5.2.0-8+etch7 Quelqu'un aurait une idée du problème ? j'ai fait une page test (des plus simple) à cette adresse : http://marianne.popuelles.be/encodetest.php dont le code est : Code :
a+ Marianne |
||
|
|
00
|
|
|
#2 |
|
Membre actif
![]() |
dans quel sens c'est mal encodé?
ton lien pointe vers un encodage url dans une url (en inventant des mots je dirais que c'est de l'url_encodage html) alors que urlencode() est une fonction php (sur le même principe je dirais que c'est de l'url_encodage php) donc oui y'a une différence entre ce que le site te donne et ce que php te donne (par exemple en php l'espace est transformé en + alors que dans l'url html c'est un %20) mais ton problème vient d'ailleurs? (l'encodage des caractères? en utf8 ou en iso???) je ne suis pas sûr de cerner ce qui te pose problème.
__________________
Tout le monde savait que c'était impossible. Il est venu un imbécile qui ne le savait pas et qui l'a fait. (\ _ /) (='.'=) Voici Lapinou. Aidez le à conquérir le monde (")-(") en le reproduisant. Spidercochon, spidercochon, il peut marcher au plafond ...MM ......Voici Spidercochon. Aidez le à conquérir le monde E(....)~....en le reproduisant. ...w |
|
|
00
|
|
|
#3 |
|
Invité régulier
![]() |
merci Léortien pour la réponse.
en fait quand on fait un urlencode d'un "ï" la fonctionne devrait donner : "%ef" et non pas "%C3%AF" comme elle le fait sur mon serveur. Quand sur http://marianne.popuelles.be/encodetest.php je clique sur [envoyer] le texte "ï" (dans mon input nommée montexte) passe dans le tableau $_POST[]. Je le récupère via $_POST['montexte'] et je fait urlencode($_POST['montexte']) ce qui devrait donc me donner : "%ef" et non pas "%C3%AF", parce que "%C3%AF" c'est pas "ï" mais "ï". (pourquoi je fais un urlencode ? c'est parce qu'en réalité, ma zone "montexte" je l'envoi à un service sur un autre serveur via un "file_get_contents("monurlencodée_contenant_entre_autre_variable_montexte")) J'espère que mon problème est plus clair. c'est peut-être effectivement un problème d'encodage, mais je ne sais pas trop comment le vérifier... a+ |
|
|
00
|
|
|
#4 |
|
Membre actif
![]() |
j'ai regardé en effet le ï donne bien %EF sur le mien
(bon c'est en majuscule mais c'est déjà ça y'a des chances alors que le charset y soit pour qqch (c'est local en fonction de la machine et non des fonctions php) où un truc du genre alors une petite idée si tu as accès à ton serveur : regarder dans le php.ini (/etc/php.ini par défaut) la ligne voire si elle est commentée (; devant) ou non, si elle existe c'est elle qui domine sinon c'est dans la conf d'apache httpd.conf (par défaut /etc/httpd/conf/httpd.conf) voire si elle est commenté (# devant) ou non sinon par défaut... (euh.. le premier truc qui décide de se prononcer dessus?) ça peut te donner une idée de ton charset par défaut j'ai un bon truc en ISO-8859-1 après pour le modifier sur la page... c'est un autre chapitre
__________________
Tout le monde savait que c'était impossible. Il est venu un imbécile qui ne le savait pas et qui l'a fait. (\ _ /) (='.'=) Voici Lapinou. Aidez le à conquérir le monde (")-(") en le reproduisant. Spidercochon, spidercochon, il peut marcher au plafond ...MM ......Voici Spidercochon. Aidez le à conquérir le monde E(....)~....en le reproduisant. ...w |
|
|
00
|
|
|
#5 |
|
Invité régulier
![]() |
Génial ! c'est résolu.
J'ai suivi ton conseil, je suis allé jeter un oeil au php.ini. La default_charset était en commentaire avec en proposition ISO-8859-1. Je l'ai décommenté et redémarré le service apache pour être certaine que le nouveau paramètre soit pris en compte. Et voilà c'était résolu. J'ai quand même regardé plus loin ! J'ai remis cette ligne en commentaire et suis allé voir dans la config apache ou j'ai trouvé : AddDefaultCharset UTF-8 que j'ai mis en commentaire et remplacé par : AddDefaultCharset ISO-8859-1. Et ça fonctionne aussi. J'ai laissé le changement au niveau de la config apache. Un tout grand merci ! ![]() Marianne |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com