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 :

Affichage de ? à la place de l'apostrophe et autres caractères


Sujet :

Langage PHP

  1. #1
    Membre habitué Avatar de obtuli31
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2011
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2011
    Messages : 43
    Points : 132
    Points
    132
    Par défaut Affichage de ? à la place de l'apostrophe et autres caractères
    Bonjour,

    Comme le traitement est en php, je poste sur ce forum.

    C'est un problème récurrent, mais malgré mes recherches je n'arrive pas à trouver de solution.
    La solution n'a pas l'air très loin, mais je tourne en rond.


    Quand je récupéré un chaine pour l'afficher, elle est mal encodée : affichage brut de $texte (ce texte arrive d'une requête et je n'ai pas la main en amont)
    Nom : donnes_brutes.PNG
Affichages : 77
Taille : 13,1 Ko

    J'effectue un traitement utf8_encode($texte) : tout semble ok sauf l'apostrophe remplacée par un ? (et certainement d'autres caractères comme le oe lié) :
    Nom : donnes_utf8_decode.PNG
Affichages : 74
Taille : 11,8 Ko

    J'ai testé htmlentities($texte) :
    Nom : donnes_utf8_html.PNG
Affichages : 77
Taille : 12,6 Ko

    Là tout semble ok, sauf que les balises qui colorisent un mot clé sont visibles.

    Si vous avez une idée ?

    merci !

    OB

  2. #2
    Membre confirmé
    Homme Profil pro
    OoW
    Inscrit en
    Juin 2019
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Ukraine

    Informations professionnelles :
    Activité : OoW

    Informations forums :
    Inscription : Juin 2019
    Messages : 139
    Points : 494
    Points
    494
    Par défaut
    \ô/
    il existe sur ce site un article très complet sur le sujet.
    Passez à l'UTF-8 sans manquer une étape, cela devrait sûrement t'aider !

  3. #3
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 896
    Points : 6 655
    Points
    6 655
    Par défaut
    Quand je récupéré un chaine pour l'afficher, elle est mal encodée
    Je ne pense pas, je crois au contraire que la chaîne est correctement encodée (en utf-8 ce qui est la norme de nos jours), mais que tu ne déclares pas l'encodage dans ta page html (ou alors que tu déclares une table de caractères obsolète depuis les années 2000 du genre ISO8859-1).

    Donc pour dire au navigateur que ta page est encodée en utf-8, tu dois inclure dans le head une balise meta qui l'indique. Par exemple en html5, on démarre la page de cette manière:
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8" />
            <title>...

    pour une version plus ancienne d'html, par exemple xhtml1.0 transitional, ça sera:
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html>
        <head>
            <meta http-equiv="content-type" content="text/html; charset=utf-8" />
            <title>...

    pour html4, c'est la même chose mise à part la DTD qui change.


    Pour la petite explication, en utf-8, le caractère È est encodé sur deux octets C3 et 88, or C3 correspond au caractère à et 88 correspond au caractère ˆ dans la table de caractère Windows-1252 (une variante de l'ISO8859-1).


    Si suite à cette modification de la balise meta pour indiquer l'encodage utf-8, c'est le reste de ta page qui s'affiche mal, alors tu devras via ton éditeur de code modifier son encodage en l'enregistrant en utf-8.

Discussions similaires

  1. [WB20] Problème d'encodage entre base de données et l'affichage
    Par sedami95 dans le forum WebDev
    Réponses: 2
    Dernier message: 26/03/2019, 12h29
  2. Réponses: 4
    Dernier message: 23/10/2012, 18h22
  3. Problème de mémoire Affichage images
    Par Repti dans le forum C++Builder
    Réponses: 6
    Dernier message: 29/03/2004, 20h06
  4. Réponses: 11
    Dernier message: 16/12/2003, 19h58
  5. Problème a l'affichage dans la console (printf)
    Par PhoneKilleR dans le forum C
    Réponses: 21
    Dernier message: 23/09/2003, 17h21

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