PHP utf-8 ne fonctionne pas toujours...

Fermé
Lordclaymore - 17 mai 2010 à 03:10
EminoMeneko Messages postés 2435 Date d'inscription jeudi 24 janvier 2008 Statut Membre Dernière intervention 23 mai 2018 - 17 mai 2010 à 04:24
Salut, j'ai fait un formulaire qui passe ses infos à la feuille traitement. Celle-ci génère un rapport contenant les informations, qui est envoyé par courriel.

Présentement ma page est codée en utf, je l'ai essayé aussi en iso (j'ai aussi essayé toute la tralée de fonctions pour convertir en utf). Le bug est que certains hébergeurs (notamment vidéotron et gmail) reçoivent un rapport comme si le UTF n'était pas géré.

En revanche, sur yahoo et hotmail, tout rentre parfaitement.

S'il y a un petit cerveau qui pourrait m'aider j'apprécierais grandement !!!!
A voir également:

2 réponses

EminoMeneko Messages postés 2435 Date d'inscription jeudi 24 janvier 2008 Statut Membre Dernière intervention 23 mai 2018 318
Modifié par EminoMeneko le 17/05/2010 à 03:38
C'est effectivement très intéressant que ça marche chez Yahoo! et Hotmail mais pas chez Google ou Vidéotron.
Le problème semblerait être extérieur à ton code mais il se peut aussi qu'au font tu ne respecterais pas bien un standard.
Dans tous les cas c'est assez intéressant comme problème.
Est-ce que tu renseigne bien l'encodage utilisé :
Dans les entêtes SMTP ?
Si le mail est au format HTML, dans la balise <meta>
Comme ceci
<meta name= "charset" content= "utf-8">

ou comme cela
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

Consultes aussi la doc de PHP
https://www.php.net/manual/en/function.mail.php
0
Lordclaymore
17 mai 2010 à 03:41
Voici mon code :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Validation de l'envoi</title>
</head>
<body>
<?php

$nom= $_POST['nom'];
$dateRapport=$_POST['daterapport'];
$courrielEtudiant=$_POST['courrielEtudiant'];
$courrielSup=$_POST['courrielSup'];
$heureArrivee=$_POST['heureArrivee'];
$heureDepart=$_POST['heureDepart'];
$total=$_POST['total'];
$taches=$_POST['taches'];
$connaissances=$_POST['connaissances'];
$aime=$_POST['aime'];
$pasAime=$_POST['pasAime'];
$senti= $_POST['senti'];
$incompetent=$_POST['incompetent'];
$competent=$_POST['competent'];
$informations=$_POST['informations'];
$commentaires=$_POST['commentaires'];
$sujet = "Journal de bord";


$From = "MIME-version: 1.0\n";
$From .= "Content-type: text/html; charset=utf-8' \n";
$From .= "From: $nom <$courrielEtudiant>'\r\n";



$message = stripslashes($message);
$message .= "<b>JOURNAL DE BORD</b> <br>";
$message .= " <b>Stagiaire :</b> $nom <br>";
$message .= " <b>Courriel :</b> $courrielEtudiant <br>";
$message .= "<hr>";
$message .= " <b>Date :</b> $_POST[daterapport]<br>";
$message .= " <b>Heure d'arrivée :</b> $heureArrivee - <b>Heure de départ :</b> $heureDepart - <b>TOTAL :</b> $total heures <br>";
$message .= "<hr>";
$message .= " <b>Tâches exécutées dans la journée :</b> <br>";
$message .= "$taches <br>";
$message .= "<hr>";
$message .= " <b>Qualités ou connaissances, en lien avec la formation, mises à profit aujourd'hui :</b> <br>";
$message .= "$connaissances <br>";
$message .= "<hr>";
$message .= "<b> Élément que l'étudiant a préféré dans sa journée :</b> <br>";
$message .= "$aime <br> ";
$message .= "<hr>";
$message .= " <b>Élément que l'étudiant a le moins aimé dans sa journée :</b> <br> ";
$message .= "$pasAime <br> ";
$message .= "<hr>";
$message .= "<b>Dans l'exercice de ses fonctions, l'étudiant s'est senti :</b> <br>";
$message .= "$senti <br> ";
$message .= "<hr>";
$message .= "<b> Élément pour lequel l'étudiant ne s'est pas senti compétent : </b><br> ";
$message .= "$incompetent <br> ";
$message .= "<hr>";
$message .= " <b>Élément pour lequel l'étudiant s'est senti compétent : </b><br>";
$message .= "$competent <br> ";
$message .= "<hr>";
$message .= "<b> L'étudiant aurait besoin d'un complément d'informations sur : </b> <br>";
$message .= "$informations <br>";
$message .= "<hr>";
$message .= " <b> Commentaires : </b><br> ";
$message .= "$commentaires <br>";




if(mail($courrielSup,$sujet, $message,$From))

{
echo "Le journal de bord a été envoyé à $courrielSup, $nom, $taches " ;
}
else
{
echo 'Votre journal de bord n\'a pu être envoyé';
}

mail($courrielEtudiant, $sujet, $message, $From)
?>



</body>
</html>
0
EminoMeneko Messages postés 2435 Date d'inscription jeudi 24 janvier 2008 Statut Membre Dernière intervention 23 mai 2018 318
Modifié par EminoMeneko le 17/05/2010 à 04:26
Apparemment tu as fais tout ce qu'il faut de ton côté.
Est-ce que tu pourrais t'envoyer un mail et vérifier dans l'en-tête du mail que le charset est bien défini. ?
Je ne vois pas où le problème se cache. J'aurais vraiment tendance à dire que le problème ne vient pas de toi mais c'est bizarre que Google ait des problèmes vu que je reçois bien mes mails en japonais... :/

Juste une remarque en passant. Tu dois bien t'amuser à analyser ton code HTML. Tu ne fais jamais de saut de ligne ?
Un <br/> fait un saut de ligne sur la page mais pas dans le code.

Quand je faisais du PHP je me donnais la peine de faire en sorte qu'il y ait des indentations et des sauts de ligne. C'était plus ou moins fastidieux mais au moins j'avais un code propre et facile à analyser.
C'est juste un petit conseil perso.
0