Я искал по всему Интернету и ТАК, пока не везет в следующем:
Я хотел бы знать, как правильно сохранить файл, используя file_put_contents
когда имя файла имеет некоторые символы в file_put_contents
. (Windows 7 как ОС)
$string = "jérôme.jpg" ; //UTF-8 string file_put_contents("images/" . $string, "stuff");
Репозиты в файле:
jГ©rГґme.jpg
Пробовал все возможные комбинации таких функций, как iconv
и mb_convert_encoding
со всеми возможными кодировками, конвертируя исходный файл в разные кодировки. Все соответствующие заголовки установлены, браузер правильно распознает UTF-8
.
Тем не менее, я могу успешно скопировать-вставить и создать файл с таким именем в GUI проводника, но как это сделать через PHP?
Последнее решение хардкора состояло в том, чтобы urlencode
строку и сохранить файл.
Возможно, это было поздно, но я нашел решение, чтобы закрыть эту проблему для меня. Забудьте о решениях iconv и multibyte ; проблема в Windows ! (в ссылке вы найдете все, что касается красоты).
После многочисленных попыток и способов решения этой проблемы я встретился с URLify и решил, что лучший способ справиться с именами unicode-in-filenames – транслитерировать их перед записью в файл.
Пример транслитерации имени файла перед сохранением:
$filename = "Αρχείο.php"; // greek name for 'file' echo URLify::filter($filename,128,"",TRUE); // output: arxeio.php