Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1385 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Tester l'encodage des caractères

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Tester l'encodage des caractères

n°1997793
webPx
Posté le 01-06-2010 à 09:52:40  profilanswer
 

Bonjour à tous,
 
Je suis en train de travailler à la récupération d'email via les fonctions IMAP de PHP. La majorité des messages reçus sont au format ISO. J'ai donc écrit une fonction "décodage" pour les traiter ensuite en utf8.
 
Le problème c'est que certains de ces mails sont au format utf8 au départ et je leur applique aussi le traitement pour les chaines iso alors qu'il ne faudrait pas...
 
Y a t'il un moyen de tester quel est l'encodage du mail (utf-8 ou iso) avant de lui appliquer une fonction de décodage ?  
 

Code :
  1. <?php
  2. $message = str_replace($search, '<br/>', imap_qprint(imap_fetchbody($mbox, $i, 1))); // On remplace les \n par des <br />  
  3.  $message = str_replace('<br/><br/>', '<br/>', $message);
  4. ?>

mood
Publicité
Posté le 01-06-2010 à 09:52:40  profilanswer
 

n°1997798
stealth35
Posté le 01-06-2010 à 09:57:55  profilanswer
 

chope le MIME du mail et fait un iconv

 

sinon pour ton str_replace c'est nl2br


Message édité par stealth35 le 01-06-2010 à 09:58:40
n°1997836
webPx
Posté le 01-06-2010 à 10:36:36  profilanswer
 

J'arrive bien à retrouver le mime du message mais j'arrive pas à le traiter parce que je connais pas l'encodage du message... meme avec la doc du manuel php
 
$test=imap_fetchstructure($mbox, $i);

n°1997838
stealth35
Posté le 01-06-2010 à 10:41:24  profilanswer
 

avec imap_mime_header_decode, sinon t'as d'autres pistes par ici avec  imap_utf8


Message édité par stealth35 le 01-06-2010 à 10:43:32
n°1997840
webPx
Posté le 01-06-2010 à 10:46:32  profilanswer
 

Ok, donc sa c'est bon mais je n'ai toujours pas l'encodage utilisé dans le message écrit clairement...
 
Quand je print_r ma variable, j'ai toujours ce tableau qui s'affiche :
Array ( [0] => stdClass Object ( [charset] => default [text] => Object ) )  
 
         $test=imap_fetchstructure($mbox, $i);  
  $elements = imap_mime_header_decode($test);
  print_r($elements);
 
donc je vois pas quel charset utiliser avec iconv

n°1997843
stealth35
Posté le 01-06-2010 à 10:53:28  profilanswer
 

utilises que imap_utf8 dans ce cas la

n°1997847
webPx
Posté le 01-06-2010 à 11:07:09  profilanswer
 

Mais mon problème n'est pas exactement celui la...
 
Je voudrais récupérer l'info :
 
Mon message est encodé en ISO ou en utf8 et appliquer ou non cette fonction si le message est en ISO :
 
$message = nl2br(imap_qprint(imap_fetchbody($mbox, $i, 1)));

n°1997859
stealth35
Posté le 01-06-2010 à 11:22:22  profilanswer
 

pourquoi faire cette fonction uniquement en ISO ?

n°1997877
webPx
Posté le 01-06-2010 à 11:29:13  profilanswer
 

En faite, j'ai besoin des infos en utf8 donc quand le mail est déja encoder en utf8 je n'ai rien à faire à par a enregistré mes messages.
 
Par contre en iso je dois d'abord convertir en UTF8 puis ensuite enregistré

n°1997891
stealth35
Posté le 01-06-2010 à 11:46:20  profilanswer
 

donc juste imap_utf8, te servira dans n'importe quelle cas

mood
Publicité
Posté le 01-06-2010 à 11:46:20  profilanswer
 

n°1997892
webPx
Posté le 01-06-2010 à 11:50:07  profilanswer
 

ba c'est je que j'avais tester à la base mais il me restais des bug genre
 
Bonjour Am=E9lie...

n°1997939
stealth35
Posté le 01-06-2010 à 13:44:35  profilanswer
 

et en comme ca

 

utf8_encode(imap_qprint($str))

 

de tout facon c'est par rapport au type de message t'as les correspondances ici :

 

http://www.php.net/manual/fr/funct [...] .php#56230
les codes sont dans les constantes


Message édité par stealth35 le 01-06-2010 à 13:47:06

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Tester l'encodage des caractères

 

Sujets relatifs
tester l'existence d'un fichier et plusje n'arrive pas à tester l'existence d'un fichier
Problème bizarre encodage caractère[UNIX/KSH] Tester l'existence de tables ! Erreur louche ! - RESOLU -
tester la connexion entre deux posteCode C++ Pour tester un mémoire DDR2
Tester un entier vide (isEmpty, isNull)?[DirectShow] faire une pause dasn un graphe d'encodage
Couper une chaine de caracteres 
Plus de sujets relatifs à : Tester l'encodage des caractères


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR