PHP : caractères spéciaux

Bonjour,

Les données récupérées de la bdd ne s'affichent pas correctement :
les caractères spéciaux (é,è,à...) sont remplacés par (?).
Commenet puis-je avoir un affichage correct.

Merci pour votre aide.

8 réponses

  1. Hello,
    c'est un probleme d'encodage de la page affiché.
    Ajoute ca dans le head de la page:

    <META HTTP-EQUIV="Content-Type" content="text/html; charset=iso-8859-1"
    1
    1. tu vas dans ton formulaire de récuperation des données ,tu met pour chaque variable à récupérer par le code php,la commande:

      htmlspecialchars( )

      exemple: $a=htmlspecialchars($_POST['nom_champ'])
      1
      1. Modérateur
        plutôt que htmlspecialchars, qui ne fait que remplacer les chevrons ("<" et ">"), les guillemets et les &, utilise htmlentities.
        (voir php les ressemblances a ne pas confondre )
        Mais la meta est encore la meilleure solution ;-)
        1
        1. j'ai l'impression que t'as raté une épisode??Ssylvainsab
          htmlentities à lui seul ne suffit!Pas la peine que tu insiste j'ai déja testé avec "htmlspecialchars","l'expérience fait la différence"!!!
          0
        2. Modérateur
          @Profil bloquéAh bon ?
          L'encodage est bon ?
          Ca m'étonne...

          Mais alors, les caractères ne sont pas remplacés par leurs entités, si ?

          Pas la peine que tu insiste
          Pas la peine de s'énerver.
          0
        3. @Ssylvainsabtu me donne envie de rigoler!!!c'est franchement rigolo ce t'as écrit en commentaires!!!
          0
        4. Modérateur
          @Profil bloquéA : Je comprends pas ce que tu veux dire (quels commentaires ?)
          B : Pourquoi tu ne réponds pas aux questions que je te pose, si tu as «l'expérience»?

          a plus
          0
        5. @Ssylvainsabj'ai l'impression que tu ne fait pas la différence entre "Expérience"relative à "Expérimentation" et "Expérience" relative à "la durée dans la pratique".Car je suis jeune peu étre que t'est un peu plus agée que moi,ou on est dans le méme régistre.

          Mais,écoute on est là pour s'entraider j'ai aucun intéret à jouer "Aux grands",car en essayant de répondre aux questions posées je me lance également comme tout le monde à la pratique et à la recherche...

          é puis tu M'escuses qu'en méme si je me suis mal comporté avec toi,franchement je préfére plutot me faire des amis que des énemis.J'espére que tu me pardonera des mes réactions tantot salées...
          0
      2. Modérateur
        j'ai l'impression que tu ne fait pas la différence entre "Expérience"relative à "Expérimentation" et "Expérience" relative à "la durée dans la pratique".
        Si.
        Je parle de «"Expérience"relative à "Expérimentation"»

        peu étre que t'est un peu plus agée que moi
        Je ne suis surement pas agée.
        Par contre je suis peut-être plus agé que toi, je ne sais pas.

        Pour finir, voici un test :
        Tu verras bien que par défaut (sans options), htmlspecialchars converti seulement les guillemets, les esperluettes (&) et les chevrons (supérieur à, ">", et inférieur à, "<") et htmlentities tout les caractères qui ont une entité correspondante, hormis l'apostrophe.
        http://ssylvainsab.free.fr/autres/tests/html-entities-et-specialchars.php
        0
        1. je sens qu'on n'est pas prés d'en finir avec ce débat,car je peux encore te prouver le contraire.
          Bon,je te propose ce que moi j'ai fais pour arriver à faire ma conclusion sur "htmlspecialchars",M.le commentateur:

          je créé un formulaire qui me permet de récupérer les données d'un client(nom,prénom,etc..).

          Ensuite,je stocke ces données dans ma base mysql.Maintenant,pour faire une mise à jour de ces mémes données client,il faut entrer le numéro qui fait référence à ce client,dans le champ n°client.Si je valide le nom,le prénom et l'adresse du client me sont affichées dans le méme formulaire.

          Ainsi,pour le premiére fois je me suis rendu compte qu'il y avait des caractéres comme "&",",;" dans les informationsj'ai utilisé "htmlentities",ça n'a rien changé.Par la suite j'ai utilisé "htmlspecialchars" et je me suis rendu que tout était devenu nickel dans ma base de donnés.ET C'EST LE MéME PROBLéME QUI A éTé POSé ICI....

          Enfin,Merci de la précision ...
          0
        2. Modérateur
          @Profil bloquéIl y a un truc auquel je n'ai pas pensé :
          ça dépend peut-être de la version de php, ou de l'encodage du serveur ou de la BDD.
          0
        3. @Ssylvainsaboh oui,le php évolue...Tu as quelle base de données sous la main?
          0
      3. Modérateur
        Je n'utilise pas encore la base de données.
        J'ai fait quelques rares tests avec MySQL, mais ca s'arrête là ;-)
        0
        1. En fait tes exemples avec "htmlentities" mettent en valeur l'utilité de cette fonction,--)c'est clair, mais tu te rendra compte de ses insuffisances quand tu aura à manipuler les données de ta base de données.
          0
      4. pour l'ESPERANTO C,G,H,J,S,U POUR CHAPEAUTEES CES LETTRES !!! MERCI (DANKON)
        0
        1. htmlentities a un probleme pr certain code du type ™qu'il traduit par
          &amp;&amp;#8482;
          au lieu de
          &amp;#8482;

          reste avec
          htmlspecialchar()
          et si d'autre personne que toi peuvent inserer du text dans ta bdd
          je te conseille fortement d'y rajouter
          mysql_real_escape_string()
          (mets des antislash devant les caracteres speciaux)

          en sortie il te faudra par contre rajouter
          html_entity_decode()
          stripslashes()
          (renvoie une chaine apres avoir retiré les antislash devant les caracteres speciaux)
          et assure toi d'avoir une meta en
          iso-8859-15
          pr que l'€ soit affiché

          bonne continuation
          0