Как исправить? Пробовал по всякому. PHP: <?php header('Content-type: text/html; charset=utf-8'); $papka = iconv('UTF-8', 'ISO-8859-1//TRANSLIT', 'test'); echo '<pre>'; print_r(scandir($papka)); echo '</pre>'; PHP: <?php header('Content-type: text/html; charset=utf-8'); $papka = iconv("CP1251", "UTF-8", 'test'); echo '<pre>'; print_r(scandir($papka)); echo '</pre>'; PHP: $papka = mb_convert_encoding('test', "utf-8", "Windows-1251"); echo '<pre>'; print_r(scandir($papka)); echo '</pre>';
Нашёл решение, работает с амперсандом PHP: setlocale(LC_ALL,'ru_RU.UTF-8'); mb_internal_encoding("UTF-8"); $files = scandir('test'); foreach($files as&$file){// обрати внимание на амперсанд $file = iconv("windows-1251","UTF-8", $file); } echo '<pre>'. print_r($files,True).'</pre>';
Вот так ещё работает PHP: $files = scandir('test'); foreach($files as $file) { echo iconv("windows-1251", "UTF-8", $file) . '<br>'; }
без iconv можно PHP: function ищем_привет( string $dir ) { $g = glob ( "{$dir}/*" ); foreach ( $g AS $a ) { if ( is_dir ( $a ) ) { return ищем_привет( $a ) . PHP_EOL; } else { return $a; } } } echo ищем_привет( 'test' );
@Dimon2x, дело типа на винде происходит? Потому что на лине встречал подобный глюк при использовании Apache, но там это не так решалось, настройкой апача