Как писать русские названия файлов и папок при создании mkdir и ZipArchive::addEmptyDir?
Суть проблемы проста, при использовании mkdir() русские названия превращаются в крякозябли
Та же проблема с использованием ZipArchive::addEmptyDir и ZipArchive::addFile
Пробовал менять по разному кодировку названия, т.е. текст который идет в параметры, результата не дало. Есть у кого 100% решение, а то в нете из того что нашел все говорят используйте английский...?
zorca, необходимость, прописанная в ТЗ, вообще у вас не должно быть такого вопроса.
Ну что бы вы уж в дальнейшем точно не задавали таких вопросов, к примеру нужно создать архив с структурой, структура включает в себя папки на русском, или предположим вам нужно из нескольких архивов которые присланы пользователем собрать 1 и отдать другому пользователю сохраняя внутреннюю структуру исходных архивов, а там и русский и арабский и китайский может быть в названиях... в общем давайте без бесполезных вопросов =)
SwoDs, вообще-то этот вопрос как раз ключевой. Потому что правильного решения проблемы "русские имена папок и файлов в zip-архиве" нет. Кодировку имен zip не хранит, и на любой системе, кроме локализованных русских виндов, имена в cp1251 превращаются в кракозябры. А если вы создаете архив на сервере с Линуксом - то наоборот, на винде будет каша. Нужно либо не использовать кириллицу, либо менять архиватор.
P.S. Рекомендую свободный 7z, если что.
SwoDs, понимаете, клиенту, которому отдается архив, абсолютно все равно в каком виде хранятся используемые в нем файлы, какая структура хранения, разбито по папкам или нет. Конкретный файл сохраняется с именем в виде хеша, а вся информация по нему: расположение в иерархии папок, имя родное и так далее - хранится в базе. При таком подходе никогда проблем подобных вашей не возникнет.
zorca, причем тут база... вы вообще о чем? Еще раз: есть 10 архивов со своей структурой созданные разными людьми, и есть адресат который хочет получить 1 архив в котором будут все файлы их этих 10 архивов, они должны там быть уже вне архива, так же к ним еще прикладывается файл который формируется в системе. Обязательное требование что бы файлы и папки которые были в исходных архивах не меняли своих названий т.е. были также названы. Теперь к вам вопрос как вы отдадите архив на скачивание с учетом требований?? Не, технически распаковать все и собрать в 1 архив добавив еще файл системы не сложно, но как вы добавите папки и файлы с их исходным названием??
Меня больше поражает что столько знатоков но никто не может фактически ответить на вопрос ибо не разу не работали с этим и не сталкивались, только теоретики...
Меня больше поражает что столько знатоков но никто не может фактически ответить на вопрос ибо не разу не работали с этим и не сталкивались, только теоретики...
Либо у кого-то кривые руки. У меня UTF-8 и система и php файлы, и все прекрасно работает.
Для начала
1) Проверь кодировку системы.
2) Проверь кодировку файла php.
На OpenServer на ненависной Венде все хорошо. На Ubuntu 16.04 c PHP 7.1 на борту тоже все хорошо. Наверное я что-то делаю не так. Сейчас проверю архивы, "созданные разными людьми".