На сервер в папку загружаются файлы с русскими названиями.
Читаю папку с файлами и перевожу в нужную кодировку:
header('Content-Type: text/html; charset= utf-8');
setlocale(LC_ALL,'ru_RU.UTF-8');
mb_internal_encoding("UTF-8");
$files = scandir('folder');
foreach($files as $v)
{
echo mb_convert_encoding($v, "UTF-8", "WINDOWS-1251");
}
И всё было прекрасно, пока не попался файл с названием "Пятигорск", вывод на странице получается "Пигорск", т.е. функция mb_convert_encoding съела две буквы. Пробовал glob читать каталог, тоже самое. Пробовал определить кодировку mb_detect_order и подставить разные варианты кодировок, ничего не помогает.
Проблема именно в сочетании букв "ят". Если назвать файл таким именем, то получим пустое имя.
-----------------
Выяснилось вот что:
Загружаю я файлы через Dreamweaver, после этого имена файлов в списке на удалённом сервере отображаются иероглифами. Это не мешает работе скрипта.
Попробовал загрузить файл с именем "ят", от имени ничего не осталось, только точка и расширение файла. Тут я ахренел :)
Если что это хостинг reg.ru. Зашёл в админку, файловый менеджер, загрузил оттуда файл, файл загрузился с русскими буквами, в скрипте строчка с mb_convert_encoding стала не нужна.
Вот такие приключения.