Я использую специальные символы (шведские буквы åäö).
Теперь у меня есть папки, содержащие изображения для объявлений. Папки называются по категориям.
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, в именах файлов. Сожалею.