Я тут набрел на очень простой транслятор
#!/usr/local/bin/perl
print "\\"Content-Type: text/plain \\" 
";
print "";
   $dos=" Ўў?¤?с¦§ЁcЄ<¬-RЇабвгдежзийклмноп??\'?":р++?%?

?\'\'""--?T?>

?";
   $win="абвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ";
$in_tab=$dos;
$out_tab=$win;
$file=&trans($file);
   sub trans
   {  $instr= $_[0];
      $outstr="";
      for ($i=0; $i
        {  $symb=substr($instr, $i, 1);
           $pos=index($in_tab, $symb);
           if ($pos>=0)
             {  $newsymb=substr($out_tab, $pos, 1);
                $outstr.=$newsymb;
             }
           else
             {  $outstr.=$symb;
             }
        }
      return ($outstr);
   }
print "";
В переменную $file подставляю имя файла. 
Я думал, что разница в кодировках dos - windows. Но это не так. Видимо нужно кодировать типа % 219 % 221 и т.д.
Незнаю, может я и не прав..
А в error.log пишет 
[Wed Mar 28 10:00:35 2001] [error] [client 192.168.1.23] File does not exist: f:
/www/users/frg/-Ф-+-А-¦-¦-В-+-А-Г -Ъ-Г-А-¦-_-+-Б-¦-+-¦ -в-н-ж1.doc
IIS я не пробовал.