©
                    本文档使用
                    php中文网手册 发布
                
(PHP 4, PHP 5, PHP 7)
imap_utf7_encode — Converts ISO-8859-1 string to modified UTF-7 text
$data 
   )
   Converts data to modified UTF-7 text.
  
This is needed to encode mailbox names that contain certain characters which are not in range of printable ASCII characters.
data An ISO-8859-1 string.
   Returns data encoded with the modified UTF-7
   encoding as defined in » RFC 2060, 
   section 5.1.3 (original UTF-7 was defined in » RFC1642).
  
[#1] dn at dnunes dot com [2007-11-08 11:59:59]
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.
[#2] [2006-07-31 07:10:10]
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
[#3] [2005-11-02 03:01:07]
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...)
[#4] marcelo at maccoy dot com dot br [2005-03-07 05:48:37]
<?php
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;                      
    }                 
}
?>