Столкнулся с проблемой, что PHP не воспринимает файлы с диакритикой (спецсимволы западноевропейских языков, например, немецкие ä,ü). То есть при листинге каталога readdir() эти файлы не попадают в список, при попытке копирования copy() - файл также определяется несуществующим. Подскажите, пожалуйста, где копать истоки этой проблемы, так как надо или её решить или дать пруф заказчику, что она нерешаема (пусть не пишут в названиях эти символы). Решения методом замены символов не подойдут сразу, так как файлы загружаются внешней программой, и я их уже никак не могу прочитать.
нет, винда Добавлено спустя 20 минут 47 секунд: пока проблема решена c использованием Com объекта: Код (Text): $fso = new Com('Scripting.FileSystemObject', null, CP_UTF8); foreach ($fso->getFolder(<имя_каталога_откуда>)->files as $file_ar) { $file = $file_ar->name; $fso->copyFile($file, <имя_каталога_куда>); } Но хотелось бы услышать по поводу самого PHP.
Насколько я помню, NTFS хранит имена файлов в UTF16, сишный fopen читает их как ANSI, php тут не при делах. Для работы с юникодными именами файлов под виндой придется разбрасываться костылями.
Всего одним - виртуалкой с линупсом Все равно боевой сервер будет линушный с вероятностью 99999999%. Так зачем костылить код под винду, если проще поднять линь?