Задать вопрос
@Dmaw

Проблема с кодировкой при чтении файлов scandir (mb_convert_encoding, iconv) что не так?

На сервер в папку загружаются файлы с русскими названиями.
Читаю папку с файлами и перевожу в нужную кодировку:
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 стала не нужна.
Вот такие приключения.
  • Вопрос задан
  • 294 просмотра
Подписаться 1 Простой 8 комментариев
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы