Précédent   Forum des professionnels en informatique > PHP > Langage
Langage Forum sur le langage PHP, la POO, les conventions, la sécurité, etc. Avant de poster : FAQ Langage, toutes les FAQ PHP, cours langage et sources PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 13/09/2011, 10h32   #1
Invité de passage
 
Inscription : septembre 2011
Messages : 16
Détails du profil
Informations forums :
Inscription : septembre 2011
Messages : 16
Points : 4
Points : 4
Par défaut Problème d'encodage accents dans urls

Bonjour,
Je suis en train de coder une page permettant de naviguer à travers le contenu de répertoires pour y récupérer les fichiers.
Tout fonctionne bien en local sous Windows avec xampp mais j'ai un problème sur mon serveur de test sous linux pour les fichiers contenant des caractères accentués.

J'utilise directory iterator pour récupérer la liste des fichiers et j'encode le nom des fichiers en utf8 comme ceci : <a href='.$fichiers.utf8_encode($item->getFilename()
Mais l'url n'est pas la même en local et sur le serveur.
Mon fichier kéola.jpg par exemple devient K%e9oala.jpg en local et l'url fonctionne correctement et K%EF%BF%BDoala.jpg sur le serveur et ne fonctionne pas.

Je précise que le serveur n'est pas en utf8 à la base, j'ai du le forcer grâce à un htaccess.

Merci d'avance à qui pourra m'aider.
Jean-Georges est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/09/2011, 11h39   #2
Invité de passage
 
Inscription : septembre 2011
Messages : 16
Détails du profil
Informations forums :
Inscription : septembre 2011
Messages : 16
Points : 4
Points : 4
J'ai remplacé par urlencode($item->getFilename()).
Cela fonctionne maintenant sur le serveur mais plus en local.
Dans l'absolu ce n'est très grave mais si vous pouviez m'éclairer sur le pourquoi j'en serai ravi
Jean-Georges est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/09/2011, 11h47   #3
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
EF BF BD sont les unités du point de code U+FFFD (�) qui est le caractère de substitution par défaut de tout caractère qui ne peut être représenté. Donc il y a une tuile quelque part (pas de l'ISO-8859-1 au départ, a priori).

D'autre part, je ne comprends pas comment vous pouvez obtenir K%e9oala.jpg avec un utf8_encode : ce n'est pas de l'UTF-8 (le résultat devrait être K%C3%A9oala.jpg puisque é est codé sur deux unités).

Enfin, Apache, sous Windows, l'URL devrait être en UTF-8 dans la mesure où il (APR en réalité) cherche à tirer profit de l'API Unicode de Windows pour tout ce qui touche aux fichiers (sinon ça doit aboutir à une 403). Sur Unixoïde, ça n'a pas d'importance, il faut que ce soit le même mais certains clients rééencode la requête suivant leur configuration (excepté si l'URL est urlencodée).
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h12.


 
 
 
 
Partenaires

Hébergement Web