ZipArchive: проблемы с кодировкой
Добавлено: 14 мар 2018, 10:44
Добрый день уважаемые обитатели форума.
Заранее хочу сказать спасибо разработчикам этого чуда OpenServer.
Для автоматизации некоторых нудных процессов на работе, оказалось идеальным решением.
И на чтобы улучшить работу еще больше, появилась необходимость работы с ZIP архивами через php. Поэтому я сразу обратился к ZipArchive. Но возникла проблема с кириллицей.
Сразу полез в инет, узнал про грабли с кодировкой CP866, проблемами CP1251 в Windows и т.д...и сколько сайтов не перелопатил, ничего не помогало...так продолжалось неделю...сколько сайтов не посещал и не пробовал чужие советы, не помогало.
Но вчера додумался запустить этот скрипт который глючит на OpenServer, на своем акке на хостинге...и о чудо...все заработало. Потом решил проверить этот же код, скачав Endels. И там тоже код заработал. Из CP866, из кракозябр, имена файлов на кириллице стали нормально отображаться.
Для наглядности приведу код и скриншоты результатов работы кода на OpenServer и хосте...
Вот код, который открывает архив и пытается вывести имя файла из архива в UTF-8:
P.S:
Если посмотрите на два скрина, то видно что на скрине с OpenServer есть строка:
[encryption_method] => 0
Может в этом путь к разгадке?
Я пытался и по этому поводу инфу найти, но ничего результативного найти не получается...ребята, HELP ME )))
Заранее хочу сказать спасибо разработчикам этого чуда OpenServer.
Для автоматизации некоторых нудных процессов на работе, оказалось идеальным решением.
И на чтобы улучшить работу еще больше, появилась необходимость работы с ZIP архивами через php. Поэтому я сразу обратился к ZipArchive. Но возникла проблема с кириллицей.
Сразу полез в инет, узнал про грабли с кодировкой CP866, проблемами CP1251 в Windows и т.д...и сколько сайтов не перелопатил, ничего не помогало...так продолжалось неделю...сколько сайтов не посещал и не пробовал чужие советы, не помогало.
Но вчера додумался запустить этот скрипт который глючит на OpenServer, на своем акке на хостинге...и о чудо...все заработало. Потом решил проверить этот же код, скачав Endels. И там тоже код заработал. Из CP866, из кракозябр, имена файлов на кириллице стали нормально отображаться.
Для наглядности приведу код и скриншоты результатов работы кода на OpenServer и хосте...
Вот код, который открывает архив и пытается вывести имя файла из архива в UTF-8:
<? header("Content-type:text/html;charset=utf-8"); $zip = new ZipArchive; $zip->open('111.zip'); $count = $zip->numFiles; for ($i = 0; $i < $count; $i++) { $stat = $zip->statIndex($i); echo iconv('CP866', 'utf-8', $stat['name']); echo "\n\n\n" . '<br><br><br><br>' . "\n\n"; print_r($stat); } $zip->close(); ?>Тут код выполнен через OpenServer: А тут он выполнен через Endels/Хостинг: Получается что проблема кроется в OpenServer. Может это настройка какая то, может в php.ini настроить че то нужно...ребята помогите...в чем может быть проблема?
P.S:
Если посмотрите на два скрина, то видно что на скрине с OpenServer есть строка:
[encryption_method] => 0
Может в этом путь к разгадке?
Я пытался и по этому поводу инфу найти, но ничего результативного найти не получается...ребята, HELP ME )))