IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[accents] Encodage des url


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 71
    Points : 56
    Points
    56
    Par défaut [accents] Encodage des url
    Bonjour,

    J'ai besoin de passer des noms de fichiers avec accents par url, et j'utilise urlencode pour ce faire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $url_path = urlencode($path);
    $url_file = urlencode($file);
    echo "<a href='selectedimage?path=$url_path&amp;file=$url_file'></a>";

    J'ai donc un lien qui ressemble à ça, par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    mapage/selectedimage?path=.%2Frepertoire%2Fsousrepertoire&file=B%E9n%E9dict.png
    Je décode ensuite simplement avec urldecode :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $path = urldecode($_GET['path']);
    $file = urldecode($_GET['file']);
    echo "<img src='$path/$file' alt='image introuvable' />";
    ça fonctionne très bien avec Firefox, mais ça ne fonctionne pas avec IE6, IE7, Opera et Konqueror. Je n'en ai pas essayé d'autres.

    J'ai essayé avec rawurlencode/rawurldecode et base64_encode/base64_decode. Ca fonctionne toujours très bien avec Firefox et pas du tout avec les autres.

    Que dois-je faire pour que tous les navigateurs comprennent ?

  2. #2
    Membre régulier Avatar de akara
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 299
    Points : 122
    Points
    122
    Par défaut
    & si tu faisais un str_replace() ?
    à par ça je vois pas...

  3. #3
    Membre expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Points : 3 145
    Points
    3 145
    Par défaut

    Lis la note de cette page, ça pourrait t'avancer : http://fr.php.net/urlencode

    PS : tes 2 echos sont vraiment vilains (particulièrement le premier, je vois pas comment il peut marcher ??) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<a href="selectedimage?path='.$url_path.'&amp;file='.$url_file.'">'.$url_file.'</a>'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<img src="'.$path.'/'.$file.'" alt="image introuvable" />';

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 71
    Points : 56
    Points
    56
    Par défaut
    Effectivement, il y avait une erreur dans le premier code que j'avais présenté. Je me suis trompé en simplifiant la ligne "echo" pour vous la présenter. J'ai corrigé l'erreur. Mes lignes "echo" sont plus compliquée que ça en vérité.

    [ sinon, je trouve mon code plus lisible que le tien ]

  5. #5
    Membre expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Points : 3 145
    Points
    3 145
    Par défaut
    Citation Envoyé par MorganStern
    [ sinon, je trouve mon code plus lisible que le tien ]
    Oui mais les miennes sont conformes au W3C au niveau du HTML (oui, les valeurs des attributs sont entre doubles quotes et non entre simple quote) et elles sont plus rapides que les tiennes (car utilisation des simples quotes et concaténations au lieu des doubles quotes contenant des variables ce qui contraint le serveur à lire le contenu des chaines de caractères afin de pouvoir interpréter les variables contenues à l'intérieur)

  6. #6
    Membre averti

    Profil pro
    Inscrit en
    Mai 2006
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 206
    Points : 319
    Points
    319
    Par défaut
    Euuh on va faire plus simple, oublie complètement les accents dans les URLs car les serveurs WINS(voir P.S.) ne vont pas trop aimer les accents, et généralement les navigateurs aussi n'aime pas non plus, car les accents n'étant pas utilisé dans tous les pays ils ne sont alors pas interprétés par défaut, franchement je te conseil de les oublier.

    P.S. : Les serveurs WINS sont en fait des serveurs qui relient une URL à une addresse IP, par exemple quand tu entre 'www.google.fr' ou même 'google.fr' dans ton navigateur, ce dernier va alors demander à un serveur WINS l'IP associée à ce nom d'URL s'il existe et te le retourner ( en fait tous les sites du monde entier n'existe pas en tant que lettre(adresse) mais en tant qu'IP ), et généralement ces serveurs la sont sous UNIX(ou LINUX) et ne prennent pas en compte les accents (installation et administration avec l'encodage de caractère anglais, donc sans accents) donc tu risque surtout d'avoir d'énormes problèmes en mettant tes URL ou nom de fichier avec des accents . En gros si tu connais l'addresse IP d'un site, tu peut l'entrer directement dans ta barre d'addresse pour y accéder, de ce fait tu ne passera par aucun serveur WINS, donc ce sera plus rapide, un peu comme quand tu entre 192.168.1.1 pour accéder à la configuration de ton modem/routeur.

    Pour exemple !!! : essaye de mettre comme addresse internet http://66.102.9.99/ tu arrivera sur google, sur un serveur situé à dublin en irlande, et ce sans passer par un serveur WINS car tu entrera une addresse IP directement. Tu remarquera aussi que le chargement est beaucoup plus rapide car tu évite la requête des serveurs WINS qui te renvoye une IP et seulement après tu sera réelement connecter au site.

    J'espere que tu aura compris pourquoi il ne faut pas mettre d'accents dans les URL

    P.S. 2 : J'avoue que je connais ceci car je suis étudiant en informatique spécialité Architecture des systèmes et réseaux, sans sa j'aurai pas répondu ^^

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 71
    Points : 56
    Points
    56
    Par défaut
    Bonjour,

    Ne serait-ce pas plutôt les DNS dont tu parles là ? Et, à ma connaissance, les DNS ne s'occupent pas de répertorier le contenu des serveurs, mais traduisent seulement la racine des adresses que nous envoyons.

    Il n'y a bien sûr pas d'accents sur le nom du site, ni même sur les noms des répertoires. Seuls les noms de fichiers peuvent éventuellement en contenir.

    Je comprends cette préoccupation concernant les accents, mais en l'occurrence, le problème que je connais ne vient pas du serveur, puisque cela fonctionne avec l'un des navigateurs, Firefox.

    Avec exactement la même adresse encodée avec urlencode, un copier/coller dans la barre d'adresse ne donne pas le même résultat selon le navigateur :
    - Firefox trouve,
    - les autres non.
    Est-ce vraiment un problème de serveur ? ça ressemble plutôt à un problème de navigateur.

    IE et cie gèrent-ils correctement le code MIME des url ? car, que je sache, le serveur ne change pas en fonction du navigateur qu'on emploie.

    Enfin, les accents, j'en ai besoin ! En gros, les abandonner, ça revient à dire que les fonctions urlencode, rawurlencode, etc. ne servent à rien et qu'on ne peut pas s'en servir, alors qu'elles existent précisément pour ce genre de problèmes.

    PS : @ trotters

    tu as raison pour la rapidité, mais ce n'est pas essentiel dans mon cas, et je préfère optimiser après coup, sinon c'est difficile à modifier et je m'arrache les cheveux pour relire ce meli-melo de points, de guillemets et d'apostrophes.

  8. #8
    Membre averti

    Profil pro
    Inscrit en
    Mai 2006
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 206
    Points : 319
    Points
    319
    Par défaut
    Non non ce sont bien des serveurs WINS dont je parle les DNS ont une autre fonction. Mais c'est vrai que la j'essaye une addresse avec des accents et sa marche sur IE mais pas sous FireFox chez moi oO et en fait il y aurai apparement un plug-in pour gérer les accents sur les navigateurs, essaye d'aller sur www.télécharger.com , le site m'a proposer d'installer un plug in pour les accents sous IE et mozilla lui change directement l'adresse et supprime les accents :o

    Sinon en fait oué j'ai dû m'emméler les pinceaux car les serveurs WINS sont comme les DNS mais ils sont utilisés lorsque tu utilise un protocol NetBios , en gros on s'en fou la xD , pour l'info wiki : http://fr.wikipedia.org/wiki/WINS

    Donc essaye de chercher des plug-ins pour les accents car certains navigateurs je pense ne prennent pas les accents par défaut.

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 71
    Points : 56
    Points
    56
    Par défaut
    Citation Envoyé par meliandah
    en fait il y aurai apparement un plug-in pour gérer les accents sur les navigateurs, essaye d'aller sur www.télécharger.com , le site m'a proposer d'installer un plug in pour les accents sous IE et mozilla lui change directement l'adresse et supprime les accents :o
    C'est quoi ce site pourri, où on demande ton numéro de carte bancaire et ton email pour télécharger des logiciels gratuits... ?



    Sinon, j'ai trouvé la solution à mon problème, sans plug-in...

    C'est assez étrange et ça me suggère que le MIME est géré n'importe comment, mais qu'importe...

    La solution consiste à ne crypter qu'une partie de l'url, celle du nom des fichiers, avec rawurlencode (ça ne marche pas avec urlencode). ça fonctionne avec Firefox (mais ce n'est pas une surprise), avec IE et Opéra. Si quelqu'un veut essayer avec Konqueror... qu'il ne se prive pas. J'ai la flemme de rebooter ma machine...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème d'encodage des url
    Par The Jos dans le forum Langage
    Réponses: 1
    Dernier message: 13/10/2010, 22h19
  2. Encodage des URLs
    Par PIEPLU dans le forum Langage
    Réponses: 4
    Dernier message: 10/06/2009, 20h59
  3. [XML][Flash] Problème d'encodage des accents
    Par JoN28fr dans le forum Flash
    Réponses: 20
    Dernier message: 11/10/2006, 21h16
  4. [XML][Flash] Problème d'encodage des accents
    Par JoN28fr dans le forum XML/XSL et SOAP
    Réponses: 9
    Dernier message: 06/10/2006, 16h45
  5. [XML] encodage des accents
    Par matonfire dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 05/05/2004, 15h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo