Les jetons encoded-word
(selon RFC 2047) peuvent apparaître dans les valeurs de certains en-têtes. Ils sont analysés comme suit:
=?<charset>?<encoding>?<data>?=
jeu de caractères UTF-8 est dans ce cas, le codage est B
qui signifie base64 (l'autre option est Q
qui signifie Cité imprimable). Pour le lire, commencez par décoder le base64, puis traitez-le comme des caractères UTF-8.
Lire également les divers RFC Internet Mail pour plus de détails, principalement RFC 2047.
Puisque vous utilisez Perl, Encode::MIME::Header pourraient être utiles:
SYNOPSIS
use Encode qw/encode decode/;
$utf8 = decode('MIME-Header', $header);
$header = encode('MIME-Header', $utf8);
RÉSUMÉ
Ce module implémente RFC 2047 Mime tête d'encodage. Il existe 3 variantes de codage ; En-tête MIME, MIME-B et MIME-Q. La différence est décrit ci-dessous
decode() encode()
MIME-Header Both B and Q =?UTF-8?B?....?=
MIME-B B only; Q croaks =?UTF-8?B?....?=
MIME-Q Q only; B croaks =?UTF-8?Q?....?=
Cela a été utile, merci. Btw, j'ai également utilisé l'encodage d'impression ('utf-8', $ headers_decoded) pour afficher correctement les en-têtes décodés, si quelqu'un d'autre le lit en écrivant un script de courrier. –