Les accents s'affichent en caractère Spéciaux

Résolu
amrani83500 Messages postés 5 Date d'inscription vendredi 2 janvier 2009 Statut Membre Dernière intervention 22 août 2011 - 19 août 2011 à 15:39
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

9 réponses

cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
20 août 2011 à 00:30
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
Bxapero Messages postés 30 Date d'inscription jeudi 24 mars 2011 Statut Membre Dernière intervention 10 juin 2012
19 août 2011 à 18:41
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'); 
cod57 Messages postés 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
19 août 2011 à 21:21
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 !
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 à 09:08
Merci à vous tous pour vos réponses , je vais essayer avec le charset que vous m'avez dis.
Merci encore

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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 à 14:07
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
cod57 Messages postés 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
22 août 2011 à 14:35
bonjour

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

++

Bonne programmation !
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 à 15:58
je viens de regarder et je suis en ANSI , dois je apporter des modifications à mon code ?
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
22 août 2011 à 17:02
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
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
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
Rejoignez-nous