--- src/download.php.orig Fri Jun 4 15:13:03 2004 +++ src/download.php Sun Jun 6 20:19:21 2004 @@ -92,7 +92,34 @@ $filename = $header->getParameter('name'); } +// вариант 1 +//$filename = decodeHeader($filename); + +// вариант 2 +/* +global $default_charset; +set_my_charset(); $filename = decodeHeader($filename); +if ($default_charset == "utf-8") { + $filename = savedhtml2utf8($filename); +} +*/ + +// вариант 3 +global $default_charset; +set_my_charset(); +if ($default_charset == "utf-8") { + if (preg_match('/^(.*)=\?([^?]*)\?(Q|B)\?([^?]*)\?=(.*)$/Ui', + $filename, $res)) { + $filename = decodeHeader($filename,false,false); + $filename = iconv($res[2], "UTF-8", $filename); + } else { + $filename = decodeHeader($filename); + } +} else { + $filename = decodeHeader($filename); +} + if (strlen($filename) < 1) { if ($type1 == 'plain' && $type0 == 'text') { $suffix = 'txt'; @@ -141,4 +168,12 @@ * attachment in case of ERROR reporting = E_ALL and the output is the screen */ mime_print_body_lines ($imapConnection, $passed_id, $ent_id, $encoding); -?> \ No newline at end of file +function savedhtmlchar2utf8($n) { + $c1 = ($n - $n % 64) / 64 + 192; + $c2 = $n + 128 - ($c1 - 192) * 64; + return(chr($c1).chr($c2)); +} +function savedhtml2utf8($str) { + return(preg_replace('/&#([0-9]{1,5});/ie', 'savedhtmlchar2utf8("\1")', $str)); +} +?> --- functions/mime.php.orig Fri Jun 4 18:22:20 2004 +++ functions/mime.php Sun Jun 6 23:02:25 2004 @@ -608,7 +608,15 @@ { case 'B': $replace = base64_decode($res[4]); - $ret .= charset_decode($res[2],$replace); +// $ret .= charset_decode($res[2],$replace); + if ($utfencode) { + $replace = charset_decode($res[2], $replace); + } else { + if ($htmlsave) { + $replace = htmlspecialchars($replace); + } + } + $ret .= $replace; break; case 'Q': $replace = str_replace('_', ' ', $res[4]); @@ -1880,6 +1888,10 @@ $filename = ereg_replace('[\\/:\*\?"<>\|;]', '_', str_replace(' ', ' ', $filename)); } + if ($isIE) { + global $default_charset; + if ($default_charset == "utf-8") $filename = iconv("UTF-8", "CP1251", $filename); + } // A Pox on Microsoft and it's Internet Explorer! // // IE has lots of bugs with file downloads.