Les accents s'affichent en caractère Spéciaux [Résolu]

Messages postés
5
Date d'inscription
vendredi 2 janvier 2009
Statut
Membre
Dernière intervention
22 août 2011
- - Dernière réponse : amrani83500
Messages postés
5
Date d'inscription
vendredi 2 janvier 2009
Statut
Membre
Dernière intervention
22 août 2011
- 22 août 2011 à 17:52
Bonjour à tous

je viens sur ce forum pour demander une aide , j'ai un script en php qui me permet de récupérer des variables dans un formulaire en HTML, et ce script et envoyé par mail.

Tous fonctionne correctement , sauf que lorsque je reçois un formulaire et qu'il y a un accent et bien dans le corps de mon message chaque accent est remplacé par î

Et voici le script :

<?php

header('content-type: text/html; charset: utf-8');
/*
********************************************************************************************
CONFIGURATION
********************************************************************************************
*/
// destinataire est votre adresse mail. Pour envoyer à plusieurs à la fois, séparez-les par une virgule
$destinataire = 'contact@monmail.fr';

// copie ? (envoie une copie au visiteur)
$copie = 'non'; // 'oui' ou 'non'

// Messages de confirmation du mail
$message_envoye = "<center>Votre demande de devis nous est bien parvenue, nous nous engageons à vous transmettre votre étude personnalisée sous 48 heures Cliquez [devis.html Retour au formulaire]

'."\n";
};
}; // fin du if (!isset($_POST['envoi']))
?>


Merci à tous
Afficher la suite 

9 réponses

Meilleure réponse
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
11
3
Merci
Ces deux caractères spéciaux signifient que le navigateur a envoyé les données en UTF8. Normal vu la première ligne de ton script. Tu dois ajouter ce header à ton mail pour que ton client mail sache que c'est de l'UTF8 : "Content-type: text/html; charset=utf-8\r\n"

D'autre part, je ne vois vraiment pas l'intérêt de passer les chaines dans stripslashes (vu qu'elles ne sont pas insérées dans une BDD) ...

VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 138 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_ghuysmans99
Messages postés
30
Date d'inscription
jeudi 24 mars 2011
Statut
Membre
Dernière intervention
10 juin 2012
0
Merci
Lut,
pourquoi ?

ceci
/*
* cette fonction sert à nettoyer et enregistrer un texte
*/
function Rec($text)
{
$text = trim($text); // delete white spaces after & before text
if (1 === get_magic_quotes_gpc())
{
$stripslashes = create_function('$txt', 'return stripslashes($txt);');
}
else
{
$stripslashes = create_function('$txt', 'return $txt;');
}

// magic quotes ?
$text = $stripslashes($text);
$text = htmlspecialchars($text, ENT_QUOTES); // converts to string with " and ' as well
$text = nl2br($text);
return $text;
};


et ceci :
// Remplacement de certains caractères spéciaux
$message = str_replace("&#039;","'",$message);
$message = str_replace("&#8217;","'",$message);
$message = str_replace("&quot;",'"',$message);
$message = str_replace('
','',$message);
$message = str_replace('
','',$message);
$message = str_replace("<","<",$message);
$message = str_replace(">",">",$message);
$message = str_replace("&amp;","&",$message);
$message = str_replace("à","à",$message);
$message = str_replace("è","è",$message);
$message = str_replace("é","é",$message);
$message = str_replace("ê","ê",$message); 


ensuite pourquoi ceci :
header('content-type: text/html; charset: utf-8'); 


au lieu de :
header('content-type: text/html; charset=ISO-8859-1'); 
Commenter la réponse de Bxapero
Messages postés
1660
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
8
0
Merci
bonsoir


comme le remarque Bxapero
header('content-type: text/html; charset=ISO-8859-1');
il aurait été bien de poster le formulaire pour voir le charset qui lui doit être iso-8859-1 ou iso-8851-2 d'ou le conflit ... et si le ne l'ai pas il faut voir comment tu sauves tes fichiers depuis l'éditeur utf8, ascii, ...





Bonne programmation !
Commenter la réponse de cod57
Messages postés
5
Date d'inscription
vendredi 2 janvier 2009
Statut
Membre
Dernière intervention
22 août 2011
0
Merci
Merci à vous tous pour vos réponses , je vais essayer avec le charset que vous m'avez dis.
Merci encore
Commenter la réponse de amrani83500
Messages postés
5
Date d'inscription
vendredi 2 janvier 2009
Statut
Membre
Dernière intervention
22 août 2011
0
Merci
Salut à tous

j'ai mis en dans mon script : header('content-type: text/html; charset=ISO-8859-1')

mais ce n'est pas mieux , c'est toujours pareille.

ma page qui contient le formulaire a cette méta.

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">, donc sur mon script php ,je dois le laisser en UTF-8

J'ai essayé de mettre sur la page ou se trouve le formulaire et ainsi que mon script php ça :

charset=ISO-8859-1
puis charset=ISO-8851-2

Ma page n'affichait plus les accents.

Merci pour votre aide
Commenter la réponse de amrani83500
Messages postés
1660
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
8
0
Merci
bonjour

as tu verifié ton éditeur de code
es tu en mode ansi,utf8,iso-8859-2 ...

++

Bonne programmation !
Commenter la réponse de cod57
Messages postés
5
Date d'inscription
vendredi 2 janvier 2009
Statut
Membre
Dernière intervention
22 août 2011
0
Merci
je viens de regarder et je suis en ANSI , dois je apporter des modifications à mon code ?
Commenter la réponse de amrani83500
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
11
0
Merci
Tout (BDD, script PHP/HTML/CSS, mail) doit être encodé de la même façon, sinon plus personne ne s'y retrouve. UTF-8 est conseillé pour les sites multilingues, mais si tu n'as que du français (et/ou des langues utilisant seulement l'alphabet latin) l'ISO-8859-1 suffit.

VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question
Commenter la réponse de cs_ghuysmans99
Messages postés
5
Date d'inscription
vendredi 2 janvier 2009
Statut
Membre
Dernière intervention
22 août 2011
0
Merci
Merci à vous tous, mon soucis venait bien de mon notepad+++ qui utilisé l'encodage ANSi après conversion en UTF-8 , tout est rentré dans l'ordre.

Merci sans vous je n'y serais pas arriver
Commenter la réponse de amrani83500