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 :

un encodage défaillant


Sujet :

Langage PHP

  1. #1
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 363
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut un encodage défaillant
    Bonjour,

    j'ai une page PHP qui envoie un mail :
    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
    $adresse="---";	
    $prenom=$_POST["prenom"];
    $nom=$_POST["nom"];
    $email=$_POST["email"];
    $from="From: $prenom $nom<$email>\r\n";
    $from.="Reply-To: $prenom $nom <$email>\n";
    $from.="X-priority:3\n";
    $msg=$_POST["texte"];
    $nom=$_POST["nom"];
    $prenom=$_POST["prenom"];
    $msg = get_magic_quotes_gpc() ? stripslashes( $msg ) : $msg;
    $texte = $nom. '&nbsp;'. $prenom.' : <br>'.'Ma question est :<br>'.$msg;
    $texte = utf8_encode($texte);
    $texte = nl2br( $texte );
    $from.="MIME-Version: 1.0\r\n";
    $from.="Content-Type: text/html";  
    $sujet="Question posée à la FCPE depuis le site internet";
    if (mail($adresse,$sujet,$texte,$from))...
    avec en début de fichier ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php
    header('Content-Type: text/html; charset=utf-8');
    ?>
    comme derrière, il y a du code html, il y a ça dans le head <meta http-equiv="content-type" content="text/html;charset=utf-8">.
    Le fichier est encodé utf-8 sans BOM ; à la racine du site, j'ai mis ce .htaccess : AddDefaultCharset utf-8.

    Et malgré tout ça, les caractères spéciaux sont mal affichés . Qu'est-ce qui ne va pas ?
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  2. #2
    Membre chevronné
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

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

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Points : 1 839
    Points
    1 839
    Par défaut
    Bonsoir,

    Essaie de retirer la fonction utf8_encode(), si la page qui envoie les données est dans le même contexte, tu n'en as pas besoin.


  3. #3
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 363
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut
    Je viens de la retirer, mais même chose...

    et d'ailleurs, le problème touche aussi la variable $sujet qui, elle, ne change jamais de valeur, contient 2 caractères accentués et n'est pas concernée par la fonction utf8_encode...
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  4. #4
    Membre chevronné
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

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

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Points : 1 839
    Points
    1 839
    Par défaut
    Sinon tu peux essayer d'ajouter :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $from.= "Content-Type: text/plain; charset=UTF-8\n";
    $from.= "Content-Transfer-Encoding: 8bit\n";

    une autre piste est d'utiliser base_64

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $sujet = "=?UTF-8?B?".base64_encode($sujet);
    $texte = "=?UTF-8?B?".base64_encode($texte);


  5. #5
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 363
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut
    y a du bon et du moins bon : grâce à la modif de $from, le contenu du mail est correct ; par contre le titre est mauvais. Et faut surtout pas utiliser la fonction base64_encode, car si on l'applique à $msg, le mail est pris pour un spam et si on l'applique juste au titre, celui-ci est illisible. Bon, comme le titre ne change jamais, il ne me reste plus qu'à en mettre un sans caractère accentué...(et la fonction +1 ne marche pas...)
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  6. #6
    Membre chevronné
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

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

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Points : 1 839
    Points
    1 839
    Par défaut
    Essaie un utf8_decode() sur le sujet. je crois me souvenir que subject n'est pas concerné par le header...


  7. #7
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 363
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut
    Je dis , +1 et , car d'une part, je suis l'auteur du post il y a plus de 3 mois ; je suis tombé sur le même problème des caractères accentués du sujet du mail ; donc, j'ai fait une recherche, suis tombé sur ce vieux post et ta réponse résoud mon problème !
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

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

Discussions similaires

  1. [Encodage] import csv - encodage défaillant
    Par JerryOne3 dans le forum Langage
    Réponses: 6
    Dernier message: 06/01/2011, 17h47
  2. Encodage de cd en fichier mp3
    Par clovis dans le forum Applications et environnements graphiques
    Réponses: 4
    Dernier message: 08/04/2004, 01h13
  3. [ENCODAGE][JAVA]Afficher correctement des accents
    Par kornelius dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 17/02/2004, 16h37
  4. Encodages DOS et Windows
    Par Aramis dans le forum Langage
    Réponses: 5
    Dernier message: 09/11/2003, 17h55
  5. [VB6] fonction d' encodage URL en VB
    Par jeanseb dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 14/01/2003, 11h16

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