специальные символы в проблеме «file_exists» (php)

Я использую специальные символы (шведские буквы åäö).

Теперь у меня есть папки, содержащие изображения для объявлений. Папки называются по категориям.

for ($i=1; $i<=5; $i++){ if (file_exists($big_images.$i.'.jpg')){ echo "Inne"; unlink($big_images.$i.'.jpg'); } if (file_exists($thumb_images.$i.'.jpg')){ unlink($thumb_images.$i.'.jpg'); } } 

Я разрешаю до 5 изображений на моем сайте, каждый заканчивается номером 1-5. Однако моя проблема заключается в том, что всякий раз, когда имя папки имеет специальный символ, file_exists возвращает false, то есть не находит файл. Хотя он и есть.

Все документы находятся в формате utf-8.

Это работает, когда в именах папок нет специальных символов.

Если вам нужно больше ввода, дайте мне знать

Что такое серверная ОС?

Если это Windows, вы не сможете получить доступ к файлам под именем файла с кодировкой UTF-8, так как реализация библиотек C IO для Windows, используемых PHP, будет отображаться только на кодовой странице по умолчанию. Для западноевропейских установок это кодовая страница 1252. Вы можете преобразовать строку UTF-8 в cp1252 с помощью iconv:

 $winfilename= iconv('utf-8', 'cp1252', $utffilename); 

( utf8_decode также можно использовать, но это даст неправильные результаты для символов расширения Windows, которые отображаются в диапазоне 0x80-0x9F в cp1252.)

Файлы, чьи имена включают символы вне репертуара системной кодовой страницы (например, греческий язык в западном ящике), не могут быть доступны вообще PHP и другим программам, использующим stdio. Существуют языки сценариев, которые могут использовать имена файлов с именами Unicode через API Win32, но PHP5 не является одним из них.

И, конечно, вышеприведенный шаг не должен использоваться при развертывании на другой ОС, где файловая система кодируется UTF-8. (то есть современный Linux.)

Если вам необходимо легко перекрестно-серверно работать с PHP, вам придется воздержаться от использования символов, отличных от ASCII, в именах файлов. Сожалею.