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.
imap_utf7_encode
(PHP 4, PHP 5)
imap_utf7_encode — ISO-8859-1 kodlu bir dizgenin kodlamasını takviyeli UTF-7'ye dönüştürür
Açıklama
string imap_utf7_encode
( string
$veri
)
Belirtilen veri dizgesinin karakter kodlamasını
takviyeli UTF-7'ye dönüştürür.
Basılabilir ASCII karakter aralığı dışında kalan karakterler içeren posta kutusu isimlerini kodlamak için gerekir.
DeÄŸiÅŸtirgeler
-
veri -
ISO-8859-1 kodlu bir dizge.
Dönen Değerler
veri dizgesinin » RFC
2060'ın 5.1.3. bölümünde tanımlanan takviyeli UTF-7 (özgün UTF-7
» RFC 1642'de tanımlanmıştır) ile
kodlanmış halini döndürür.
Ayrıca Bakınız
- imap_utf7_decode() - Bir dizgenin karakter kodlamasını takviyeli UTF-7'den ISO-8859-1'e dönüÅŸtürür
dn at dnunes dot com ¶
5 years ago
Anonymous ¶
6 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
Anonymous ¶
7 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...)
marcelo at maccoy dot com dot br ¶
8 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;
}
}
?>
