Encoder de l' ASCII en UTF-8 (en recuperant un mail en IMAP)

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Encoder de l' ASCII en UTF-8 (en recuperant un mail en IMAP)

Re: Encoder de l' ASCII en UTF-8 (en recuperant un mail en I

par liens_geeks » 11 déc. 2012, 10:46

J'en suis arrivé là au fur et à mesure des étapes de debuggage mais c'est clair que vu d'un bloc ça peut paraitre sources d'erreurs.
Merci

Re: Encoder de l' ASCII en UTF-8 (en recuperant un mail en I

par xTG » 11 déc. 2012, 10:01

Le souci que je soulevais c'est que tu appliquais un traitement à une variable.
Ce traitement ci t'aidera à comprendre l'erreur :
$message = "un deux trois quatre";
$message = str_replace("un", "", $message);
echo $message; // deux trois quatre

$message = str_replace("trois","", $message);
echo $message; // deux quatre
Bref si l'une des fonctions modifie ta chaîne le résultat des autres fonctions n'est pas probant vu que ton but est de les exécuter sur la chaîne initiale.

Re: Encoder de l' ASCII en UTF-8 (en recuperant un mail en I

par liens_geeks » 10 déc. 2012, 19:30

J'aurais aimé que ce soit si simple!
Je viens de tester, ça ne change rien.

Je n'ai jamais rencontré de soucis par rapport à ton approche, j'ai toujours fais des traitement de ce genre :

Code : Tout sélectionner

$test = "un deux trois"; $test = str_replace("deux", "", $test); echo $test ;
Ca renvoie 'un trois'

Et merci!!

Re: Encoder de l' ASCII en UTF-8 (en recuperant un mail en I

par xTG » 10 déc. 2012, 17:20

Même s'il y a une fonction qui fonctionnera avec ton code ça risque pas. :?

Ceci sera mieux :
$message = imap_fetchbody($inbox,$email_number,1);
echo "<hr >1/Message encodé en ".mb_detect_encoding($message)."
";
$message2 = imap_utf8($message);
echo "2/Message encodé en ".mb_detect_encoding($message2)."
";
$message2 = html_entity_decode($message,ENT_COMPAT, 'UTF-8');
echo "3/Message encodé en ".mb_detect_encoding($message2)."
";
$message2 = utf8_encode($message);
echo "4/Message encodé en ".mb_detect_encoding($message2)."
";
$message2 = iconv("ASCII", "UTF-8", $message);
echo "5/Message encodé en ".mb_detect_encoding($message2)."
";
mb_internal_encoding("UTF-8");
$message2 = mb_decode_mimeheader($message);
echo "6/Message encodé en ".mb_detect_encoding($message2)."<hr />";

Encoder de l' ASCII en UTF-8 (en recuperant un mail en IMAP)

par liens_geeks » 10 déc. 2012, 16:10

Bonjour,
Pour un de mes projets, je parse une boite gmail en PHP et je lis les mails d'un expéditeur donné.

Le problème que je n'arrive pas à résoudre est que le corps du mail est en ASCII et que je n'arrive pas à l'encoder en UTF-8

J'ai essayé tout ça :

Code : Tout sélectionner

$message = imap_fetchbody($inbox,$email_number,1); echo "<hr >1/Message encodé en ".mb_detect_encoding($message)."<br />"; $message = imap_utf8($message); echo "2/Message encodé en ".mb_detect_encoding($message)."<br />"; $message = html_entity_decode($message,ENT_COMPAT, 'UTF-8'); echo "3/Message encodé en ".mb_detect_encoding($message)."<br />"; $message = utf8_encode($message); echo "4/Message encodé en ".mb_detect_encoding($message)."<br />"; $message = iconv("ASCII", "UTF-8", $message); echo "5/Message encodé en ".mb_detect_encoding($message)."<br />"; mb_internal_encoding("UTF-8"); $message = mb_decode_mimeheader($message); echo "6/Message encodé en ".mb_detect_encoding($message)."<hr />";
=> Les 6 echo m'affichent 'Message encodé en ASCII'


Le corps de message qui s'affiche de la sorte dans mon navigateur :
=09=09=09=09Vos donn=C3=A9es demand=C3=A9es le 10/12/2012 =C3=A0=
14H34 sont d=C3=A9sormais disponibles. Vous pouvez les t=C3=A9l=C3=A9charg=
er en cliquant sur le lien de t=C3=A9l=C3=A9chargement ci-dessous.<br/><br/=
>=09=09=09=09=09<tr>
=09=09=09=09=09=09<td>T=C3=A9l=C3=A9chargement des donn=C3=A9es : </td><td>=
<a href=3D"http://www.test.com/=
1524a8e11ac0a5099bb1236">http://www.test.com/telecharge=
ment/7a0a534651524a8e11ac0a5099bb1236</a></td>
=09=09=09=09=09</tr>
=09=09=09=09=09<tr>
Auriez vous une piste de recherche?

Merci d'avance