Problème d'encodage...

WRInaute accro
Salut,

J'ai un soucis d'encodage.
Sur ma page "contact", j'ai un formulaire qui envoi le message dans ma boite mail.

Lorsque je reçois celui-ci, les lettres accentuées sont du type à pour à, é pour é, etc...

Voici ma déclaration. La même que pour d'autre site pour qui je n'ai aucun soucis...

Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
	<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />

Une idée ?

Merci
 
WRInaute accro
Ah bah oui...
Code:
Content-Type: text/plain

Code:
Content-Type: text/html
C'est pareil... (même si ce n'est pas correct pour mes mail.)
 
WRInaute accro
Dans le message de ton mail, précise que tu veux 1 encodage Latin: charset=ISO-8859-1

Code:
<?php 

    $texte_plain = "hello Dude \n"; 
    $texte_html = "hello Dude <br />"; 

    $mime_boundary = "----nomdusite----".md5(time()); 
    $entetes = "From: nomdusite <services@ndd.com>\n";
    $entetes .= "Mime-Version: 1.0\n"; 
    $entetes .= "Content-Type: multipart/alternative; boundary=\"$mime_boundary\"\n"; 

    # TEXT EMAIL 
    $mess = "--$mime_boundary\n"; 
    $mess .= "Content-Type: text/plain; charset=ISO-8859-1\n"; 
    $mess .= "Content-Transfer-Encoding: 8bit\n\n"; 
    $mess .= $texte_plain; 

    # HTML EMAIL 
  
    $mess .= "--$mime_boundary\n"; 
    $mess .= "Content-Type: text/html; charset=ISO-8859-1\n"; 
    $mess .= "Content-Transfer-Encoding: 8bit\n\n"; 
    $mess .= $texte_html; 


    mail("email","titre",$mess,$entetes); 

    ?>
 
WRInaute accro
Et autour des données saisies, avant de les concaténer pour générer le message, tu as essayé de jouer avec utf8_encode/utf8_decode ? Ca permet en général de résoudre ce genre de soucis.
 
WRInaute accro
Bah je viens de placer
Code:
"Content-Type: text/plain; charset=\"UTF-8\""
pour tester et ça fonction...


Mais je ne vois pas pourquoi et donc... ça me saoul.
:roll:
 
WRInaute accro
Rod la Kox a dit:
Bah je viens de placer
Code:
"Content-Type: text/plain; charset="UTF-8""
pour tester et ça fonction...


Mais je ne vois pas pourquoi et donc... ça me saoul.
:roll:

tu lui envoie de l'urf8, donc si tu met un charsert en urf8 rien de plus normal

comme te la dit UsagiYojimbo, utilise utf8_decode($texte) avant d'envoyer ton mail, puis ensuite tu utilises charset=ISO-8859-1 dans le mail pour les caractères latins.
 
WRInaute discret
Rod la Kox,

tiens nous au courant de la résolution de ton problème : j'ai le même que toi ...

Comme complément d'info, j'ajouterai que si le message est envoyé par mail() sur :
- une adresse @neuf.fr : affichage OK.
- une adresse @monsitemutu.com : le problème d'affichage persiste.

Ma solution temporaire :
- j'ai supprimé tous les accents dans l'objet du message,
- j'ai remplacé les caractères accentués par leur équivalent (&eacute; pour é - &egrave; pour è - etc ...) dans le texte du message.

A+
 
WRInaute accro
@dauzac si tu veux envoyer tes mails en ISO 8859-1, ta solution n'est pas la solution temporaire mais la bonne solution.

Il suffirait d'encoder le mail en UTF-8 pour ne pas avoir a remplacer tes caractères particuliers par leurs entités HTML.
 
WRInaute accro
je suis d'accord avec toi, le bibouillage n'est pas pérenne

on peut résumer comme cela :

A) le texte est en UTF8 -> mettre le charset du mail en UTF8
B) le texte est en latin -> mettre le charset du mail en ISO

si le texte est en latin et que l'on veut le charset du mail en UTF8
il faut dans ce cas passer le texte en UTF8 avec la fonction php : utf8_encode() pour retrouver le cas A)

si le texte est en UTF8 et que l'on veut le charset du mail en ISO
il faut dans ce cas passer le texte en latin avec la fonction php : utf8_decode() pour retrouver le cas B)
 
Discussions similaires
Haut