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 :

PHP et codage des accents


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    261
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 261
    Points : 125
    Points
    125
    Par défaut PHP et codage des accents
    Pouvez vous m'expliquer la différence de comportement entre les serveurs.
    Affichons salut à tous

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    ......
    echo "salut &agrave; tous";
    Mais suite à un oubli, l'accent sur le "a" n'a pas été codé latin1
    Nous avons donc cela

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    ......
    echo "salut à tous";
    Dans ce cas, j'ai un affichage correct malgré tout sur le navigateur client de l'accent... dans 99% des cas.

    CEPENDANT un serveur me rend l'incontournable point d'interrogation à la place du "a" accentué

    A quoi est-du cette différence d'interprétation php sur le serveur ?
    Un paramètre dans le php.ini ?

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Mais suite à un oubli, l'accent sur le "a" n'a pas été codé latin1
    la premiere ecriture n'est pas du latin1 mais une entité HTML.
    Latin1 contient bien le "à", le caractère peut donc être écrit dans la page sans transformation.

    Est-ce que tu as vraiment testé ce cas simple tel quel ?
    As-tu testé directement en HTML ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Citation Envoyé par pierre50 Voir le message
    CEPENDANT un serveur me rend l'incontournable point d'interrogation à la place du "a" accentué
    Et que dis le navigateur sur l'encodage de ta page lorsque tu l'extrais de ce serveur ?
    • Avant de poser une question, n'hésitez pas à chercher dans la FAQ et les forums
    • Merci d'utiliser les balises de code (# dans l'éditeur)
    • N'oubliez pas de vous servir des boutons , et

    S.N.A.F.U

  4. #4
    Membre régulier Avatar de thomas9501
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Décembre 2006
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 102
    Points : 114
    Points
    114
    Par défaut
    Si ton navigateur n'est pas configuré pour détecter l'encodage de ta page (en supposant que celui-ci soit correctement défini) mais attribue un encodage par défaut, il se peut que les caractères spéciaux soient mal interprétés.

    Pour palier à ce problème, utiliser les entités html est une bonne solution.
    Une petite astuce : comme tu ne connais pas forcément toutes les entités par cœur et que ça peut rapidement devenir agaçant de les taper, tu peux utiliser une fonction très pratique en PHP :
    htmlentities() : http://fr.php.net/manual/fr/function.htmlentities.php
    On n'est pas le meilleur quand on le croit mais quand on le sait !!

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    261
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 261
    Points : 125
    Points
    125
    Par défaut
    Je re-confirme :

    Code renvoyé par le navigateur

    Dans 99% des cas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Document sans nom</title>
    </head>
     
    <body>
    salut à tous
    </body>
    </html>
    Mais sur un serveur, j'ai le meme code HTML sauf le point d'interrogation dans le losange gris en lieu et place du à

    Pour la plupart des serveurs, on a :
    default_charset= no_value

    Le serveur posant probleme n'aurait-il pas un
    default_charset= "utf8"
    qui prendrait le dessus à la création du HTML ?

    J'ai demandé à la personne de placer un php_info() sur son serveur pour connaitre la valeur. J'attends la reponse ...

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    261
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 261
    Points : 125
    Points
    125
    Par défaut
    Les choses avancent mais j'aimerais comprendre

    Sur le serveur posant problème, nous avons default_charset= no_value
    Le problème ne vient pas de là

    Cela étant, si j'ajoute en haut de fichier
    ini_set('default_charset','iso-8859-1')
    alors l'affichage de l'accent est correct

    Accent pris en compte sur ce serveur avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php 
     ini_set('default_charset','iso-8859-1');
     ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Document sans nom</title>
    </head>
    <body>
    <?php echo "salut à tous";?>
    </body>
    </html>
    mais accent remplacé par un point d'interrogation pour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Document sans nom</title>
    </head>
    <body>
    <?php echo "salut à tous";?>
    </body>
    </html>

    Cela vous inspire quoi ?

  7. #7
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    J'en pense que puisque ton problème se produit sur une page HTML, il n'y a rien a trouver du côté de PHP.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    261
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 261
    Points : 125
    Points
    125
    Par défaut
    ?? Mais qui crée le html sur le serveur ?

    Pour étayer mes propos :

    Serveur Academie de Caen (comportement classique)
    http://www.etab.ac-caen.fr/bsauveur/test2.php


    Serveur Acad. Grenoble (problème accent)
    http://lyarglac.edres74.net/test2.php



    Mais si j'ajoute ini_set('default_charset','iso-8859-1');c'est OK sur ce serveur



    ??

  9. #9
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    ?? Mais qui crée le html sur le serveur ?
    sur une page HTML, rien.
    ou alors tu veux dire que tu n'as pas réalisé le test que je proposais ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    261
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 261
    Points : 125
    Points
    125
    Par défaut
    Pour le serveur en question

    Si c'est une simple page html contenant
    <p>salut à tous</p>
    Alors pas de soucis.Je retrouve bien mon accent

    Mais s'il s'agit d'une page php
    <?php echo "salut à tous"; ?>
    alors il y a problème

Discussions similaires

  1. Réponses: 3
    Dernier message: 15/02/2008, 18h19
  2. [PHP & XML] Affichage des accents
    Par Mescaline dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 20/01/2008, 19h11
  3. [LDAP] Problème au niveau des accents une interface PHP
    Par Manuxy dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 30/04/2007, 11h16
  4. [ENCODAGE][JAVA]Afficher correctement des accents
    Par kornelius dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 17/02/2004, 16h37
  5. Réponses: 11
    Dernier message: 16/12/2003, 19h58

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