Aller au contenu

Codification des caractères de messagerie


francoisch

Sujets conseillés

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.JPG
extension: 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é par francoisch
Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...