Студия креативных разработок DevArt.PRO.
Разработка сайтов и форумов под ключ!
Сильнейшая команда в России по vBulletin - читать подробнее...
 
 
 
 

 
 
Здесь скоро опять что то будет...
 
 
 
 
 
 
Loading

Вернуться   форум vBSupport.org > vBSupport.org > Гурушник > Кодер

Объявления
  • Изменения в правах
  • Каталог Фрилансеров
  • Добро пожаловать!
  • Premoderation
  • Новичкам!
  • For English speaking users
Ответ
 
Опции темы Опции просмотра
Старый 07.03.2011, 02:48   #1
k0t
 
Аватар для kerk
Работа с ZipArchive

Приветствую сообщество кодеров =)
Цитата:
XX - Блин, Яндекс уже 5 минут думает...
YY -- Он гуглит...
так собсно о чем я...
гуглил свой вопрос долго и упорно, но решения толкового так и "ненагуглил"
в пхп есть встроенный класс ZipArchive
но он наотрез отказывается понимать кириллицу
поясняю:
если в зип-архиве есть файлы, имена которых НЕ на английском языке, именно так, не на английском, потому как и спец символы других языков коверкает точно так же как и кириллицу
соответственно, при распаковке такого архива, мы имеем (или нас имеют?) опостылевшие кракозяблы
точно так же и с архивами, созданными в других системах, например под MAC OS
имена файлов, подобные этому - текст 02.txt
понятно, что это UTF
но кодерам от этого не легче, нужно искать или выдумывать костыли, что бы нормально распаковать архив
ок, костыль нашел
автоматом определяет кодировку строки, и конвертит в UTF
(выдернул файл из библиотеки ~ 30 KB)
немного допилил под свои нужды, конвертит в кодировку форума - работает, успокоился...
ан хрен там =)
при упаковке файлов в архив с помощью ZipArchive (обратная операция), все теже яйца, только вид сверху
архив созданный в среде виндовс:


то, что показывает дебаг, перед упаковкой файлов в архив


и вот собсно то, что находится в архиве, созданном средствами ZipArchive


найденный костыль в данном случае не помогает =\
============

ну и собсно к чему это все...
не сильно нравится такое решение: подключение 30КБ файла, для того, что поправить строку
может есть более красивое решение данной проблемы? может какие то наработки у кого?
да и решение проблемы с добавлением в архив файлов, было бы не плохо =)
============

да, кроме ZipArchive, пробовал разные библиотеки (в т.ч. и из дистрибутива phpMyAdmin)
zip.lib.php
unzip.lib.php
не понравилось =\
не могу объяснить, но что то не то...
  Ответить с цитированием
Рекламка
Реклама на форуме

Файловый Архив

  • Неограниченное количество категорий и суб-категорий
  • Тонкие настройки прав доступа
  • Предпросмотр медиа файлов: FLV, IFLV, F4A, F4V, MP4, MP3, MOV и других...
  • Мультизагрузка файлов - SWFUploader
  • Добавление файлов с сервера
Подробности и история обновлений продукта в этой теме
Старый 08.03.2011, 00:15   #2
zCarot
zМарковь
Хочет третью строчку =)
 
Аватар для zCarot


вот только генерируемый .zip никак не хранит кодировку - на системах, отличных от русской Windows, вполне возможно, что будут кракозяблы
  Ответить с цитированием
Старый 08.03.2011, 00:25   #3
zCarot
zМарковь
Хочет третью строчку =)
 
Аватар для zCarot
Кстати, полазил по bugs.php.net и нашёл вот такой патчик:

http://bugs.php.net/patch-display.ph...evision=latest

Быть может в 5.3.6 таки будет поддержка UTF-8
  Ответить с цитированием
Старый 08.03.2011, 03:30   #4
kerk
k0t
 
Аватар для kerk
zCarot,
да iconv это конечно здорово =)
а как автоматически определить кодировку имени файла?
и почему конвертить строку именно в cp866 ? (я кстати, только этот вариант и не попробовал )

и еще
комменты в архив на русском нормально добавляются и отображаются корректно
  Ответить с цитированием
Старый 08.03.2011, 13:17   #5
zCarot
zМарковь
Хочет третью строчку =)
 
Аватар для zCarot
Ну ты можешь составить список соответствий
windows-1251 => cp866
windows-1252 => cp850
и т.д., изучай википедию)

Как определить изначальную кодировку ты уже нашёл способ)

Можно пойти ещё более тупым путём - пытаться сначала конвертировать из одной в другую, если ошибка - пробовать следующую пару)))


А как комментарии там хранятся я не в курсе) Но имена файлов старым способом - в DOS кодировке с сортировкой букв в алфавитном порядке (то есть кириллическая cp855 не подойдёт)


А вообще попробуй накатить этот патч и пересобрать PHP - может поможет
  Ответить с цитированием
Старый 08.03.2011, 15:25   #6
kerk
k0t
 
Аватар для kerk
Цитата:
Сообщение от zCarot Посмотреть сообщение
пересобрать PHP
да я пока только на винде тренируюсь =)
оставлю без изменений пока, сделал регулярку, что бы проверяла только наличие русских символов
Цитата:
Сообщение от zCarot Посмотреть сообщение
определить изначальную кодировку ты уже нашёл способ
да, но только при распаковке
при добавлении в архив - не канает =)
ладушки...
похоже, это больше никому не интересно =)
  Ответить с цитированием
Старый 09.03.2011, 12:59   #7
xorex
Эксперт
vBSponsor
 
Аватар для xorex
Я немного не в теме но на своем форуме использую пару хаков на просмотр ZIP архивов и преобразования вложений в zip.

Вот пара ссылок на то что там используется, может пригодится...

адын два

P.S С кодировкой проблем замечено не было при использовании тех библиотек.
  Ответить с цитированием
Старый 17.03.2011, 23:13   #8
zCarot
zМарковь
Хочет третью строчку =)
 
Аватар для zCarot
Круто, блин.

Вышел PHP 5.3.6, но они более не собирают его под VC6 - только под VC9
А Apache собирают только под VC6)) Зашибись - либо использовать стороннюю сборку апача, либо php
  Ответить с цитированием
Старый 17.03.2011, 23:56   #9
kerk
k0t
 
Аватар для kerk

видимо так и останемся на 5.2.х...
  Ответить с цитированием
Старый 18.03.2011, 00:32   #10
zCarot
zМарковь
Хочет третью строчку =)
 
Аватар для zCarot
Поставил 5.3.6 на сервак - проблема с кодировкой в zip архивах не решилась - патч не вошёл в сборку, видимо не помог
  Ответить с цитированием
Ответ

Закладки

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.



 
 

Текущее время: 01:03 26.05.2012. Часовой пояс GMT +4.


Powered by vBulletin® Version 3.0.10
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd. Перевод: zCarot