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 :

mauvais affichage d'accents et caractères spéciaux


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Inscrit en
    Juin 2009
    Messages
    104
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Juin 2009
    Messages : 104
    Points : 120
    Points
    120
    Par défaut mauvais affichage d'accents et caractères spéciaux
    Bonjour,

    j'ai un soucis qui concerne les accents et autres caractères spéciaux .

    Je travaille sur un petit script qui injecte des données dans Mysql à l'envoi d'un export Excel en CSV.

    Tout va bien sauf ... les accents : é ï à etc

    je trouve sur "http://www.php.net/manual/fr/function.get-html-translation-table.php" la solution suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <?php
    $trans = get_html_translation_table(HTML_ENTITIES);
    $str = "Hallo & <Frau> & Krämer";
    $encoded = strtr($str, $trans);
    echo $encoded;
    ?>
    Je ne sais pas pourquoi, mais cela n'écho pas "Krämer" mais bien "Kr?amer".

    Une piste ?

    Bonne journée,
    Pat

    pour info : Je code sur OSX, teste sous FF sur un serveur mutualisé OVH pro.

  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
    Execute dans ton script avant ton import, la requete SET NAMES 'LATIN1' ou SET NAMES 'UTF8' selon ton encodage.

  3. #3
    Membre régulier
    Inscrit en
    Juin 2009
    Messages
    104
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Juin 2009
    Messages : 104
    Points : 120
    Points
    120
    Par défaut heuuu, pardon ?
    qu'est ce que cela veut dire ?
    (si j'ai posté dans "débutant", il y a une raison)

    le code que j'avais posté dans mon problème me semblait et propre et simple :
    pour afficher
    ë
    il suffit de
    ....

    pourtant chez moi, le même code ne me donne pas la réponse souhaitée ...

    et "SET NAMES 'LATIN1' ou SET NAMES 'UTF8' " ... cela veut dire ?

    Pat

  4. #4
    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
    Le script que tu nous montres ne répond pas vraiment à ton problème : il converti les accents pour les afficher dans une page en les convertissant en entitées HTML.
    Au passage, ce script doit faire la meme chose que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $str = "Hallo & <Frau> & Krämer";
    echo htmlentities($str);
    Pour savoir pourquoi il ca ne fonctionne pas chez toi, il faudrait voir ce que tu obtiens dans la source HTML du navigateur.

    Concernant ton "(si j'ai posté dans "débutant", il y a une raison)", il conviendrait peut etre de recevoir avec amabilité la réponse de quelqu'un qui prend un peu de temps pour t'aider, même si je peux comprendre que la réponse ne te convienne pas.
    A quoi rime tout ce charabia avec SET NAMES ? C'est un sujet largement expliqué sur le forum :
    http://www.developpez.net/forums/d28...et-names-utf8/
    Et cela resoud très souvent les problèmes d'envoi d'accents vers mysql.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 156
    Points : 190
    Points
    190
    Par défaut
    Personelement je n'aime pas me compliquer la vie, et j'utilise les entête suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <?php
    header ('Content-type: text/html; charset=utf-8');
    ?>
    il n'y a plus que les < et > qu'il faut respectivement remplacer par &lt; et &gt;

  6. #6
    Membre régulier
    Inscrit en
    Juin 2009
    Messages
    104
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Juin 2009
    Messages : 104
    Points : 120
    Points
    120
    Par défaut
    Bonjour,
    (et quelques excuses pour le ton de mon dernier message, il était plus que légèrement déplacé)

    je viens à l'instant de lire l'article proposé.
    Si je comprends bien, cela solutionnerait mon problème à l'injection vers Mysql.
    Je garde cela pour la fin de mon script, merci !

    Pour répondre à vos deux réponses concernant l'affichage:

    Mon header est :
    <meta http-equiv="content-type" content="text/html; charset=utf-8">

    et concernant "htmlentities "
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $str = "é ê è à ï ä ";
    echo htmlentities($str);
    echo '<br>';
    echo utf8_encode($str);
    echo '<br>';
    echo utf8_decode($str);
    echo '<br>';
    echo htmlentities( $str, ENT_QUOTES, "UTF-8" );
    me donne ceci :
    � � � � � �
    <br>
    Ž ˆ • Š
    <br>
    � � � � � �
    [pas de contenu pour le 4eme echo]

    Tout cela me semble fort étrange ...

    Merci pour votre aide.
    Pat

  7. #7
    Expert confirmé
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Points : 4 853
    Points
    4 853
    Par défaut
    Salut,
    Regarde aussi l'encodage de l'editeur.

  8. #8
    Membre régulier
    Inscrit en
    Juin 2009
    Messages
    104
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Juin 2009
    Messages : 104
    Points : 120
    Points
    120
    Par défaut
    Thes, ce que tu me dit me plonge encore plus dans la brume mais m'ouvre effectivement une piste !

    J'ai demandé à mon éditeur (BBEdit) de rouvrir mon fichier en UTF-8
    le résultat était bien foireux (ce qui me confirme que avant il était formaté autrement, mac roman j'imagine donc)

    par contre, dans cette nouvelle version, je ré-écris
    $str = "é à ï ô ö ";
    et Ô miracle, le serveur gère le tout nickel chrome !

    Je pense que je vais ré ouvrir un nouveau Poste, plus précis du coup, sur "UTF 8 et export excell en CSV"

    Merci à tous !

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 30/10/2008, 10h05
  2. affichage des accents et caractères spéciaux
    Par sarahG dans le forum Langage
    Réponses: 7
    Dernier message: 05/06/2008, 17h37
  3. accents et caractères spéciaux dans un champ
    Par falco- dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 31/10/2007, 15h29
  4. [Wamp] accents et caractères spéciaux
    Par faamugol dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 17/10/2007, 00h42
  5. Probleme Accents et Caractères Spéciaux
    Par Danyel dans le forum VB.NET
    Réponses: 14
    Dernier message: 22/08/2007, 21h59

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