Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/01/2012, 20h47   #1
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
Par défaut un encodage défaillant

Bonjour,

j'ai une page PHP qui envoie un mail :
Code :
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 :
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
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2012, 21h42   #2
Membre Expert
 
Avatar de ska_root
 
Homme
Développeur informatique
Inscription : août 2005
Messages : 1 179
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 42
Localisation : France

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

Informations forums :
Inscription : août 2005
Messages : 1 179
Points : 1 580
Points : 1 580
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.

__________________
http://cdemarche.developpez.com/

Tu as la réponse à ta question ? N'oublies pas le petit en bas à gauche de ton message...
ska_root est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2012, 21h54   #3
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
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
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2012, 22h07   #4
Membre Expert
 
Avatar de ska_root
 
Homme
Développeur informatique
Inscription : août 2005
Messages : 1 179
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 42
Localisation : France

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

Informations forums :
Inscription : août 2005
Messages : 1 179
Points : 1 580
Points : 1 580
Sinon tu peux essayer d'ajouter :
Code php :
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 :
1
2
3
 
$sujet = "=?UTF-8?B?".base64_encode($sujet);
$texte = "=?UTF-8?B?".base64_encode($texte);

__________________
http://cdemarche.developpez.com/

Tu as la réponse à ta question ? N'oublies pas le petit en bas à gauche de ton message...
ska_root est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2012, 23h16   #5
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
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
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2012, 00h36   #6
Membre Expert
 
Avatar de ska_root
 
Homme
Développeur informatique
Inscription : août 2005
Messages : 1 179
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 42
Localisation : France

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

Informations forums :
Inscription : août 2005
Messages : 1 179
Points : 1 580
Points : 1 580
Essaie un utf8_decode() sur le sujet. je crois me souvenir que subject n'est pas concerné par le header...

__________________
http://cdemarche.developpez.com/

Tu as la réponse à ta question ? N'oublies pas le petit en bas à gauche de ton message...
ska_root est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 01/05/2012, 22h21   #7
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
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
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h18.


 
 
 
 
Partenaires

Hébergement Web