Как-то так:
header("Content-Type: text/html; charset=utf-8");
$sPath = '.';
$dDir = opendir($sPath); // открываем директорию, $dDir - дескриптор
$ignore_list = ['.', '..', 'alldoc.php', 'meddoc.php'];
while ( false !== ($sFileName = readdir($dDir)) ) {
if (! in_array($sFileName, $ignore_list)) {
$info = pathinfo($sFileName);
$ext = $info['extension'];
echo ('<table><tr><td>'
. '<img src="/папка_с_иконками/'. $ext .'.png">'
. $sFileName.'</td><td><a href="'.$sFileName.'">Скачать</a></td></tr></table>');
}
}
closedir ($dDir);
php.net/manual/en/function.pathinfo.php
А на счет кракозябр - что-то не так с кодировками. Вообще это зависит от настроек окружения, но если лень разбираться можете накостылить используя
iconv.