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 :

Accent dans lien


Sujet :

Langage PHP

  1. #1
    Membre actif
    Homme Profil pro
    développeur
    Inscrit en
    Octobre 2004
    Messages
    480
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : développeur
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2004
    Messages : 480
    Points : 281
    Points
    281
    Par défaut Accent dans lien
    Bonjour,

    J'affiche dans une page un lien vers un fichier pdf dont le nom contient des caractères accentués (mécanisme.pdf par exemple).
    Lorsqu'on clique sur le lien, le fichier doit normalement s'ouvrir dans une autre fenêtre du navigateur.
    Mais à cause des caractères, le fichier n'est pas trouvé.

    Voici le déroulement :
    Récupération du nom du fichier dans la base de données via un script php
    Ce nom est récupéré via ajax puis affiché sur la page

    Le code ajax :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    function affiche_connecte(divlogin, divconnecte, divmessage, divpage) {
    	getXhr();
    	xhr.onreadystatechange = function() {
    		if(xhr.readyState == 4 && xhr.status == 200) {
    			response = xhr.responseText;
    			divconnecte.innerHTML = response;
    			if (response == '') {
    				divmessage.innerHTML = 'Une erreur est survenue.';
    				return false;
    			} else {
    				divlogin.style.display = 'none';
    				divconnecte.style.display = '';
    				divmessage.innerHTML = '';
    				affiche_accueil(divpage);
    				return true;
    			}
    		}
    	}
    	xhr.open("POST","Commun/menu.php",true);
    	xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=iso-8859-15');
    	xhr.send("");
    }
    Voici les différents essais et leurs résultats, en fonction du code dans le script php (le code ajax reste identique) :

    1. echo $nom_guide;
      1. Lorsqu'on passe la souris sur le lien, il apparaît correctement dans la barre de statut.
      2. Dans le fichier source, le caractère "é" est codé "%C3%A9".
      3. En cliquant sur le lien, le nom du fichier s'affiche correctement dans la barre d'adresse du navigateur.
      4. Mais il y a l'erreur suivante :
        Not Found
        The requested URL /Doc/mécanisme.pdf was not found on this server.

    2. echo htmlentities($nom_guide)
      1. Lorsqu'on passe la souris sur le lien, il apparaît dans la barre de statut avec "é" à la place de "é".
      2. Dans le fichier source, il n'y a pas le caractère "é" mais "é" qui est codé "%C3%83%C2%A9".
      3. En cliquant sur le lien, le nom du fichier s'affiche avec "é" à la place de "é" dans la barre d'adresse du navigateur.
      4. Et il y a l'erreur suivante :
        Not Found
        The requested URL /Doc/mécanisme.pdf was not found on this server.

    3. echo urlencode($nom_guide)
      1. Lorsqu'on passe la souris sur le lien, il apparaît correctement dans la barre de statut.
      2. Dans le fichier source, le caractère "é" est codé "%C3%A9".
      3. En cliquant sur le lien, le nom du fichier s'affiche correctement dans la barre d'adresse du navigateur.
      4. Mais il y a l'erreur suivante :
        Not Found
        The requested URL /Doc/mécanisme.pdf was not found on this server.

    4. echo utf8_encode($nom_guide)
      1. Lorsqu'on passe la souris sur le lien, il apparaît correctement dans la barre de statut.
      2. Dans le fichier source, le caractère "é" est codé "%C3%A9".
      3. En cliquant sur le lien, le nom du fichier s'affiche correctement dans la barre d'adresse du navigateur.
      4. Mais il y a l'erreur suivante :
        Not Found
        The requested URL /Doc/mécanisme.pdf was not found on this server.


    J'ai fait les tests sur deux types de serveurs :
    WinXP/Wamp5
    Linux

    Seul le cas 1 fonctionne sous WinXP/Wamp5.

    Le problème vient-il du système d'exploitation ?
    De la version de php ?
    Autre chose ?

  2. #2
    Modérateur
    Avatar de blueice
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2003
    Messages
    3 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 487
    Points : 5 134
    Points
    5 134
    Par défaut
    De l'accent ne jamais mettre de caractère spéciaux dans les noms de fichiers, liens url, etc...

  3. #3
    Membre actif
    Homme Profil pro
    développeur
    Inscrit en
    Octobre 2004
    Messages
    480
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : développeur
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2004
    Messages : 480
    Points : 281
    Points
    281
    Par défaut
    OUPs !! OUPs !! OUPs !!

    Je viens de m'apercevoir que je codais plusieurs fois utf8_encode, urlencode, etc...

    Donc, au final, je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo urlencode($nom_guide);
    1. Lorsqu'on passe la souris sur le lien, il apparaît correctement dans la barre de statut.
    2. Dans le fichier source, le caractère "é" est codé "%E9".
    3. En cliquant sur le lien, le nom du fichier s'affiche avec "%E9" dans la barre d'adresse du navigateur.
    4. Le fichier est bien trouvé


    Cependant, selon l'environnement (système d'exploitation certainement), il faut utiliser urlencode ou utf8_encode.

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

Discussions similaires

  1. [WSS 3.0] Accents dans les liens par mail
    Par maxstone dans le forum SharePoint
    Réponses: 1
    Dernier message: 23/10/2007, 16h59
  2. [FLASH MX2004] Problème accent dans un XML
    Par cinetryx dans le forum Flash
    Réponses: 10
    Dernier message: 30/05/2007, 00h26
  3. [PHP-JS] Problème d'accent dans un lien html
    Par canabral dans le forum Langage
    Réponses: 4
    Dernier message: 27/09/2006, 12h02
  4. Réponses: 5
    Dernier message: 08/03/2004, 10h28
  5. Table Access et Accents dans TDBGrid
    Par puzpuz_vannes dans le forum Bases de données
    Réponses: 3
    Dernier message: 13/11/2003, 22h23

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