PHP 8.4.0 RC4 available for testing

imap_utf7_encode

(PHP 4, PHP 5, PHP 7, PHP 8)

imap_utf7_encodeConvertit une chaîne ISO-8859-1 en texte UTF-7 modifié

Description

imap_utf7_encode(string $string): string

Convertit une chaîne string ISO-8859-1 en texte UTF-7 modifié.

Cette fonction sert à encoder les noms de boîtes aux lettres qui contiennent des caractères internationaux hors de l'espace ASCII.

Liste de paramètres

string

Une chaîne de caractères ISO-8859-1.

Valeurs de retour

Retourne les données string encodées avec l'encodage UTF-7 modifié tel que défini dans la » RFC 2060, section 5.1.3.

Voir aussi

+add a note

User Contributed Notes 5 notes

up
1
dn at dnunes dot com
17 years ago
Maccoy function's isn't reliable 'cause it doesn't follow the RFC 2060. It will work fine for most latin chars (which, in base64, will turn into "+A..."), but for other language it can make a big mess. If you're using an internationalizated system, try using the other presented options.
up
1
marcelo at maccoy dot com dot br
19 years ago
<?php
/**
* @return encoded string
* @param string $str
* @desc Convert str to UTF-7 imap default mailbox names
(the imap_utf7_encode don t built the same result)
*/
function getEncodedUtf7($str){
if(!
$str){
echo
"error: you need to give a string parameter.";
return
false;
}
# change spaces by entropy because mb_convert fail with spaces
$str=ereg_replace(" ","xyxy",$str);
# if mb_convert work
if($str=mb_convert_encoding($str,"UTF-7")){
# change characters
$str=preg_replace("/\+A/","&A",$str);
# change to spaces again
$str=preg_replace("/xyxy/"," ",$str);
# return encoded string
return $str;
# else
}else{
# print error and return false
echo "error: is not possible to encode this string '$str'.[".
imap_last_error().
"]";
return
false;
}
}
?>
up
1
Anonymous
19 years ago
Note that php4 (4.4.0) will encode IMAP folders in a way that no other program will be able to decode them back.
$ php4 <<EOF
> <?php
> echo "ENCODED: " . imap_utf7_encode("Ü") . "\\n";
>
?>
> EOF
ENCODED: &w5w-

Now try to decode the result string ("&w5w-") using e.g. javamail or python's imaplib, or if you don't like these languages - create an IMAP folder using PHP and try to display it in an IMAP client (mutt, thunderbird, outlook, whatever...)
up
0
Olivier
5 years ago
For those who search for a good implementation of modified UTF-7 encoding for IMAP, you can find a code that works on :
http://tananyag.ntszki.hu/mail/functions/imap_utf7_local.php
The result is different from imap-utf7-encode() function and is identical to mailbox name generated by Thunderbird.
up
0
Anonymous
18 years ago
This encoding will not work for cyrus imapservers and you might have problems with other mail clients.
Use mb_convert_encoding($str, "UTF7-IMAP","ISO-8859-15") instead.

ps: mb_convert_encoding() requires building php with --enable-mbstring option
To Top