Php rar - прошу помощи

pikasso
На сайте с 27.01.2008
Offline
150
843

Здравствуйте.

У меня возникла такая проблема с расширением php rar:

есть php скрипт, который распаковывает полученный rar архив и складывает все в определенную папку. Все работает нормально, пока в названии архивированных файлов не встречается русский язык (этого избежать к сожалению никак нельзя), тогда весь русский обрезается и остаются лишь английские буквы и цифры, из за этого получаются одинаковые названия файлов (например "001") и это в свою очередь ведет к перезаписыванию файлов одного другим.

Может кто знает как подружить это расширение с русскими названиями ?

Код:


$rar = rar_open(realpath(".")."/temp/".$file_name) or die('ERROR: Could not open archive!');
// получение списка файлов в архиве
$entries = rar_list($rar);
foreach ($entries as $entry) {
//Получаем название файла
$report_file_name=$entry->getName();

//Переводим название в латиницу
$report_file_name=encodestring($report_file_name);

//Пытаемся распаковать этот архив
if ($entry->extract(false, realpath(".")."/temp/".$cur_id."/".$report_file_name)) {
//Этот файл был удачно распакован
echo 'Extracted - '.$report_file_name."<br />";
}
}

Получается что сама функция rar_list не понимает русский и в цикл уже приходит обрезанное название :madd:

pikasso добавил 01.08.2010 в 14:59

Я забыл упомянуть что тесты показали что не важно какое название передается в $report_file_name, конечный файл хоть и получается с другим названием, но на самом деле распаковывается первый файл "001", с тем же хешем.

firefox19
На сайте с 05.11.2009
Offline
34
#1

c rar дела не имел, признаюсь сразу, но была похожая проблема при переходе с windows-1251 на UTF-8. Может дело в кодировке?

Ваши идеи - наша работа (http://yaweb.ru) Продам Сайт агентства недвижимости (/ru/forum/561489)
pikasso
На сайте с 27.01.2008
Offline
150
#2

firefox19, сейчас специально перепроверил: изменение кодировки никак не влияет ;( Метод rar_list к сожалению упорно не хочет видеть русский язык ;(

DM
На сайте с 26.07.2010
Offline
2
#3

Можно код вот этой функции encodestring()?

Можно в личку...

leprekon
На сайте с 13.05.2010
Offline
27
#4

Может вместо функции encodestring() попробывать iconv ()?

pikasso
На сайте с 27.01.2008
Offline
150
#5

encodestring это просто перевод кириллических названий в латиницу.

В массиве $entries уже нету русского текста, то есть до encodestring дело вообще не доходит.

ЗЫ

Код вообще не мой, меня просто попросили подправить немного данный скрипт.

DM
На сайте с 26.07.2010
Offline
2
#6
pikasso:
encodestring это просто перевод кириллических названий в латиницу.
В массиве $entries уже нету русского текста, то есть до encodestring дело вообще не доходит.
ЗЫ
Код вообще не мой, меня просто попросили подправить немного данный скрипт.

Странно, конечно. С раром не работал, только с зипом, там таких проблем не наблюдал. Значит надо смотреть сам класс.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий