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 :

Encodage de caractères entre PHP et Outlook


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2011
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2011
    Messages : 51
    Points : 80
    Points
    80
    Par défaut Encodage de caractères entre PHP et Outlook
    Bonjour,

    Je rencontre un problème d'encodage avec PHP et Outlook. Ce problème n'est pas permanent, il se produit de manière aléatoire.
    Le but est d'afficher une page web dans un message Outlook. Les données de la page web sont extraites d'une base de données MySQL dont le jeu de caractères est UTF-8 :

    Nom : Mysql.PNG
Affichages : 131
Taille : 8,6 Ko

    L'encodage de la page PHP s'effectue avec le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header('Content-Type: text/html; charset=UTF-8');
    L'affichage de la page web dans un navigateur quelconque ne présente aucun problème particulier.
    C'est lorsque j'envoi le message que l'encodage pose parfois problème lors de l'ouverture du message dans Outlook : (capture d'écran)

    Nom : erreurs.PNG
Affichages : 124
Taille : 19,1 Ko

    Ci dessous un extrait de code (afficher la source) du message reçu :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    test.mpm.fr/updatePcg2Phase.php?Phase=Phase 1&amp;LigneProjet=&amp;Nom_projet=Finances : convergence vers SIFM (1/3)&amp;mail=pierre.rambaldi@ampmetropole.fr&amp;ChoixAgent1=6" target="_self"><input type="button" value="Phase 1"></a></td><td><a hre="" f="http://appccc-test.mpm.fr/updatePcg2Phase.php?Phase=Phase 2&amp;LigneProjet=&amp;Nom_projet=Finances : convergence vers SIFM (1/3)&amp;mail=pierre.rambaldi@ampmetropole.fr&amp;ChoixAgent1=6" target="_self"><input type="button" value="Phase 2"></a></td><td><a href="http://appccc-test.mpm.fr/updatePcg2Phase.php?Phase=Phase 3&amp;LigneProjet=&amp;Nom_projet=Finances : convergence vers SIFM (1/3)&amp;mail=pierre.rambaldi@ampmetropole.fr&amp;ChoixAgent1=6" target="_self"><input type="button" value="Phase 3"></a></td><td><a href="http://appccc-test.mpm.fr/updatePcg2Phase.php?Phase=Phase 5&amp;LigneProjet=&amp;Nom_projet=Finances : convergence vers SIFM (1/3)&amp;mail=pierre.rambaldi@ampmetropole.fr&amp;ChoixAgent1=6" target="_self"><input type="button" value="Phase 5"></a></td><td><a href="http://appccc-test.mpm.fr/updatePcg2Phase.php?Phase=Terminé&amp;LigneProjet=&amp;Nom_projet=Finances : convergence vers SIFM (1/3)&amp;mail=pierre.rambaldi@ampmetropole.fr&amp;ChoixAgent1=6" target="_self"><input type="button" value="Terminé"></a></td>&lt;
     /tr&gt;<tr><td style="text-align:center;">75</td><td style="text-align:center;">C15032</td><td style="text-align:center;">FI</td><td style="text-align:left;width:500px;">SEDIT-MARIANNE / ASTRE

    On peut voir en rouge le code parfois "mal écrit" qui est écrit normalement dans le reste de la page.

    Extrait du code de la page PHP :

    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
    24
    25
    26
    27
    28
    29
    30
        // Colonne phase : Phase 3
        . '<td>';
        $message = html_entity_decode($message);
        $Phase = 'Phase 3';
        $message= $message. '<a href="http://appccc-test.mpm.fr/updatePcg2Phase.php?Phase=' . $Phase . '&LigneProjet=' . $LigneProjet . '&Nom_projet=' . $data['Nom_projet'] . '&mail=' . $mail . '&ChoixAgent1=' . $ChoixAgent . '" target="_self"><input type="button" value ="Phase 3" ></a>'
        . '</td>'
        // Colonne phase : Phase 5
        . '<td>';
        $message = html_entity_decode($message);
        $Phase = 'Phase 5';
        $message= $message. '<a href="http://appccc-test.mpm.fr/updatePcg2Phase.php?Phase=' . $Phase . '&LigneProjet=' . $LigneProjet . '&Nom_projet=' . $data['Nom_projet'] . '&mail=' . $mail . '&ChoixAgent1=' . $ChoixAgent . '" target="_self"><input type="button" value ="Phase 5" ></a>'
        . '</td>'
        // Colonne phase : Terminé
        . '<td>';
        $message = html_entity_decode($message);
        $Phase = 'Terminé';
        $message= $message. '<a href="http://appccc-test.mpm.fr/updatePcg2Phase.php?Phase=' . $Phase . '&LigneProjet=' . $LigneProjet . '&Nom_projet=' . $data['Nom_projet'] . '&mail=' . $mail . '&ChoixAgent1=' . $ChoixAgent . '" target="_self"><input type="button" value ="Terminé" ></a>'
        . '</td>'
        . '</tr>' ; 
        $message = html_entity_decode($message);
        }
        $message= $message. '</table>';
        $message= $message. '</form>';
     
        $subject = 'Avancement Projets';
        $headers[] = 'MIME-Version: 1.0';
        $headers[] = 'Content-Type: text/html; charset="UTF-8"';
        $headers[] = 'From: PCG@ampmetropole.fr';
        mail("To:<" . $mail . ">", $subject, $message, implode("\r\n", $headers))
        $db = null;
    Quelle peut être la solution à ce problème?

    Cordialement,

    Pierre

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Question bête : à quoi te servent les appels à html_entity_decode successifs ? Tu as des html_entity_encode quelque part ? Et pourquoi pas un seul appel à la fin ?

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2011
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2011
    Messages : 51
    Points : 80
    Points
    80
    Par défaut
    Merci de cette réponse mais une seule fonction html_entity_decode sur la dernière variable $message avait déjà été testé sans plus de succès. Avec ou sans cette fonction, le résultat reste le même aussi. De plus le résultat de l'affichage n'est pas le même suivant la personne qui réceptionne le même message dans Outlook. Voilà pour les constats.

  4. #4
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2011
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2011
    Messages : 51
    Points : 80
    Points
    80
    Par défaut
    Bonjour,

    Alors pour répondre à ma question, il faut placer le code de la page web dans un tableau $message[] dans le code et le rassembler avec la fonction implode();
    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
     
        $message[] = '<!DOCTYPE html>';
        $message[] = '<html xmlns="http://xxx.x3.org/1999/xhtml">';
        $message[] = '<head>';
        $message[] = '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">';
        $message[] = '<title>PLAN DE CHARGE GLOBAL</title>';
        $message[] = '<link rel="stylesheet" media="screen" href="css/style.css">';
        $message[] = '<style type="text/css">a:link{text-decoration:none}</style>';
        $message[] = '</head>';
        $message[] = '<body>';
        $message[] = '<section id="main_section">';
     
        ...
     
        $message[] = '</body>';
        $message[] = '</html>';
     
        mail("To:<$mail . ">", $subject, implode("\r\n", $message), implode("\r\n", $headers));
    Et ça marche!

    Bonne journée.

  5. #5
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Pas très logique, mais si ça fonctionne...
    Tu aurais également pû regarder du côté de la Syntaxe Heredoc.

  6. #6
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2011
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2011
    Messages : 51
    Points : 80
    Points
    80
    Par défaut
    Bonjour Célira,

    Je vais tester cette syntaxe.

    Cordialement,

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

Discussions similaires

  1. l'encodage du caractére en php et mysql
    Par mohamed el amine dans le forum Langage
    Réponses: 1
    Dernier message: 21/04/2014, 06h57
  2. [MySQL] Jeux de caractères entre PHP et Mysql
    Par ludovic79 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 14/10/2009, 13h58
  3. [PHP-JS] Encodage des caractères
    Par 123quatre dans le forum Langage
    Réponses: 4
    Dernier message: 14/11/2007, 16h14
  4. [PHP-JS] Encodage entre PHP et JS
    Par Akinion dans le forum Langage
    Réponses: 4
    Dernier message: 14/02/2007, 16h57

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