francoisch Posté 27 Octobre 2011 Posté 27 Octobre 2011 (modifié) Bonjour J’ai développé un petit lecteur de messagerie qui fonctionne depuis quelques années : imap_open ("{".$serveur_entrant. $part=imap_fetchbody($link,$msgid,$i2);if ((strtoupper($dparam->attribute)=='NAME') ||(strtoupper($dparam->attribute)=='FILENAME')) $filename=$dparam->value; J’ai parfois des soucis avec la transcodification des caractères qui provoque des affichages curieux, comme : Comment allez-vous ? Bien=2C j'esp=E8re ! J’ai aussi parfois, et c’est plus ennuyeux, des difficultés à identifier les pièces jointes : filename: =?iso-8859-1?Q?Et=E9_20114.JPG?=extension: jpg?= qui fonctionne d’ordinaire et devrait dire : filename: Eté_20114.JPGextension: jpg Tout semble vraiment tourner autour de la bonne / mauvaise transcodification des caractères. A votre avis, comment faire ? Merci par avance de votre aide. Francois ------------------------------------------------------ J'ajoute que j'ai fait: mb_detect_encoding($body); qui indique que l'encodage est ASCII, ce qui ne semble pas faire avancer le sujet. Francois ------------------------------------------------------ Les solutions, un peu bricolées: - une table de conversion de caractères de Html en texte, par exemple: str_replace("=E9","é",$string) - une correction des caractères =?iso-8859-1?Q?, avec: utf8_decode(imap_utf8() Francois Modifié 28 Octobre 2011 par francoisch
Cariboo Posté 28 Octobre 2011 Posté 28 Octobre 2011 Ah la détection de l'encodage. Bon déjà oublie la fonction mb_detect_encoding() parce qu'elle se plante une fois sur deux. La fonction Unix (que tu peux appeler depuis php) file -i /path/file est un peu plus fiable. Mais elle peut se planter aussi. Tu peux chercher les codes BOM en début de fichier pour éliminer certains encodages. Ensuite, en général, on cherche surtout à savoir si c'est de l'UTF-8 ou de l'ISO. Dans ce cas, il suffit de tester la présence des codes Unicode pour quelques caractères spéciaux : - si on ne les trouve pas : c'est probablement de l'iso (note le "probablement") - si on les trouve : c'est probablement de l'UTF-8 Mais si le mail est en anglais : tu es carotte ! (peu de caractères spéciaux dans le fichier). En plus, pour compliquer le tout, il faudrait détecter le bon encodage, mais aussi la bonne table de caractères (ce n'est pas exactement la même chose). Et là, savoir si on travaille en iso-8859-15 ou iso-8859-1, on peut oublier.
francoisch Posté 28 Octobre 2011 Auteur Posté 28 Octobre 2011 bonjour Cariboo et merci de ton post que je viens juste de voir. Je crois avoir discerné que le codage est, dans la plupart des messages reçus, de l'ISO-8851-1; parfois, il arrive, je crois, que ça soit de l'Utf8. Enfin, comme j'ai trouvé des solutions (voir plus haut) qui paraissent fonctionner, j'abandonne la messagerie avec ses complexités volontiers insondables, pour moi au moins. Francois
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant