Форумы портала PHP.SU » » Работа с файловой системой и файлами » Не могу разобраться с кодировкой

Страниц (1): [1]
 

1. artur4ek94 - 06 Декабря, 2016 - 15:05:18 - перейти к сообщению
Доброго времени суток!
Как решить такую проблему с кодировкой?
Кодировка самого файла - UTF-8.
Функция на php читает файлы и папки из указаной директории, и выводит их на экран. отображаются они нормально, а вот в поисковой строке при открытии папки с русскими символами непонятная чушь(вложение).
Кодировка в HTML стоит <meta charset="utf-8">. Кодировка локального сервера и файла php.ini на сервере тоже UTF-8.
Как с этим бороться?
PHP:
скопировать код в буфер обмена
  1. function getFileSize( $size ) {
  2.   $times = 0;
  3.   $comma = '.';
  4.   while ($size>1024) {
  5.     $times++;
  6.     $size = $size/1024;
  7.   }
  8.   $size2 = floor($size);
  9.   $rest = $size - $size2;
  10.   $rest = $rest * 100;
  11.   $decimal = floor($rest);
  12.  
  13.   $addsize = $decimal;
  14.   if ($decimal<10) $addsize .= '0';
  15.  
  16.   if ($times == 0)
  17.     $addsize = $size2;
  18.   else
  19.     $addsize = $size2.$comma.mb_substr($addsize,0,2);
  20.  
  21.   switch ($times) {
  22.     case 0 : $mega = ' bytes'; break;
  23.     case 1 : $mega = ' KB'; break;
  24.     case 2 : $mega = ' MB'; break;
  25.     case 3 : $mega = ' GB'; break;
  26.   }
  27.  
  28.   $addsize .= $mega;
  29.  
  30.   return $addsize;
  31. }
  32.  
  33. // Рекурсивная функция для удаления каталога
  34. function removeDir( $dir )
  35. {
  36.   if ( $d = opendir($dir) ) {
  37.     while( ($file = readdir($d)) !== false ) {
  38.       if ( is_file($dir.'/'.$file) ) {
  39.         unlink($dir.'/'.$file);
  40.       } else if ( is_dir($dir.'/'.$file) and $file != '.' and $file != '..' ) {
  41.         removeDir($dir.'/'.$file);
  42.       }
  43.     }
  44.     closedir($d);
  45.   }
  46.   return rmdir($dir);
  47. }
  48.  
  49. $dir = $_POST["dirName"];
  50. if ( isset( $_GET['dir'] ) ) $dir = $_GET['dir'];
  51.  
  52. // ПЕРВАЯ ЧАСТЬ СКРИПТА - ПОКАЗАТЬ СПИСОК ДИРЕКТОРИЙ И ФАЙЛОВ
  53. if ( is_dir($dir) ) {
  54.   chdir($dir);
  55.  
  56.   $basedir = getcwd();
  57.   $basedir = str_replace('\\','/', $basedir);    
  58.  
  59.   // Родительская директория
  60.   $parent = dirname($basedir);
  61.   $cur = $basedir;
  62.   // Путь до текущей директории
  63.   $path = '';
  64.   while (mb_substr($cur, 0, 1) == '/') {
  65.     $cur = mb_substr($cur, 1, mb_strlen($cur));
  66.     $path .= '/';
  67.   }
  68.   $p_out = $path;
  69.   while (mb_strlen($cur) > 0) {
  70.     $k = mb_strpos($cur,'/');
  71.     if (!mb_strpos($cur,'/')) $k = mb_strlen($cur);
  72.     $s = mb_substr($cur,0,$k);
  73.     $cur = mb_substr($cur, $k+1, mb_strlen($cur));
  74.     $path .= $s.'/';
  75.     $p_out .= '<a href="'.$_SERVER['PHP_SELF'].'?dir='.$path.'">'.$s.'</a>/';
  76.   }
  77.   echo "<div class='wraper'>";
  78.   echo '<p class="currentDir">Текущая директория: '.$p_out.'</p>';
  79.   echo '<div>&nbsp;<a href="'.$_SERVER['PHP_SELF'].'?dir='.$parent.'"><img src="./images/prev.png" alt="" /><strong>Назад</strong></a></div>'."\n";
  80.   echo "</div>";
  81.  
  82.   // Список файлов и директорий текущей директории
  83.   $files = array();
  84.   $folders = array();
  85.   $zipFiles = array();
  86.   if ( $dh = opendir( getcwd() ) ) {
  87.     while (($file = readdir($dh)) !== false) {
  88.       if ($file != '..' && $file != '.') {
  89.         if ( is_file( $file ) ) {
  90.           $files[] = $file;
  91.         }
  92.         if ( is_dir( $file ) ) $folders[] = $file;
  93.       }
  94.     }
  95.     closedir($dh);
  96.   }
  97.  
  98.   echo "<table border='3'><tr><th>#</th><th>Имя</th><th>Тип</th><th>Размер</th></tr>";
  99.  
  100.   foreach ($folders as $file) {
  101.       echo '<tr><td><img src="./images/folder.gif" alt="" /></td><td><a title="Перейти в папку" href="'.$_SERVER['PHP_SELF'].'?dir='.$basedir.'/'.$file.'">'.iconv("Windows-1251","UTF-8",$file).'</a></td><td>Папка</td><td></td></tr>';
  102.   }
  103.  
  104.   foreach ($files as $file) {
  105.     echo '<tr><td><img src="./images/file.gif" alt="" /></td><td>'.iconv("Windows-1251","UTF-8",$file).'</td><td>Файл</td><td>'.getFileSize(filesize($file)).'</td></tr>';
  106.   }
  107.      echo "</table>";
  108. }

 

Powered by ExBB FM 1.0 RC1