(PHP 5, PHP 7)

iconv_mime_decodeDécode un champ d’en‐tête MIME


iconv_mime_decode ( string $encoded_header [, int $mode = 0 [, string $charset = ini_get("iconv.internal_encoding") ]] ) : string

iconv_mime_decode() décode un champ d’en‐tête MIME.

Liste de paramètres


L’en‐tête encodé, sous la forme d’une chaîne de caractères.


mode détermine une alternative dans le cas où iconv_mime_decode() rencontre un champ d’en‐tête MIME mal formé.

Masques acceptables pour la fonction iconv_mime_decode()
Valeur Constante Description
1 ICONV_MIME_DECODE_STRICT Si défini, l’en‐tête correspondant sera décodé en suivant strictement le standard » RFC2047. Cette option est désactivée par défaut, car il existe beaucoup de mauvais clients de courriel qui ne suivent pas ce standard et donc, produisent de mauvais en‐têtes MIME.
2 ICONV_MIME_DECODE_CONTINUE_ON_ERROR Si défini, iconv_mime_decode() essaie de continuer à décoder l’en‐tête passé, même si des erreurs apparaissent.


Le paramètre par défaut charset spécifie le jeu de caractères à utiliser pour représenter le résultat. S’il est omis, iconv.internal_encoding sera utilisé.

Valeurs de retour

Retourne un champ MIME en cas de succès, ou FALSE si une erreur survient durant le décodage.


Exemple #1 Exemple avec iconv_mime_decode()

// Ceci affichera : "Subject: Prüfung Prüfung"
echo iconv_mime_decode("Subject: =?UTF-8?B?UHLDvGZ1bmcgUHLDvGZ1bmc=?=",

Voir aussi

add a note add a note

User Contributed Notes 3 notes

Dirk Becker
6 years ago
While creating a new webmailer, I had to coop with a lot of mails and only half of them were correct encoded!
Often the text is tagged as ISO but in real its UTF :/

After trying a lot of solutions and combination a found a way which seems to work for all our mails. Maybe its usefull to someone else too.


function mime_encode($data)
$resp = imap_utf8(trim($data));

preg_match("/=\?/", $resp))
$resp = iconv_mime_decode($data, ICONV_MIME_DECODE_CONTINUE_ON_ERROR, "ISO-8859-15");

json_encode($resp) == 'null')
$resp = utf8_encode($resp);


koronci at aol dot com
7 years ago
A simple and working solution for latin encoding supports Slovak, Czech, Russian ect.
<?php iconv("utf-8", "windows-1250", $SomeWeirdText); ?>

specially for those who strugle with imap_mime_header_decode
dido dot sevilla at gmail dot com
15 years ago
In PHP versions that have imap_mime_decode built in, it's possible to emulate the operation of this function:

function iconv_mime_decode($str, $mode=0, $charset="UTF-8")
$data = imap_mime_header_decode($str);
    if (
count($data) > 0) {
// because iconv doesn't like the 'default' for charset
$charset = ($data[0]->charset == 'default') ? 'ASCII' : $data[0]->charset;
iconv($charset, $charset, $data[0]->text));

I've only tried to use this code snippet to decode ISO-2022-JP messages to UTF-8, but I see no reason why it shouldn't work in other cases.
To Top