--- 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 Mon Nov 15 21:12:15 2004 +++ functions/mime.php Mon Nov 15 21:22:38 2004 @@ -1889,6 +1889,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.