Шведские символы (ÅÄÖ) запутались в zcl-файлах PclZip

Я использую «Библиотеку PhpConcept — Zip Module 2.8.2» (http://www.phpconcept.net/pclzip/), также называется pclzip для создания zip-файла. Я использую XAMPP на Windows 8.1.

Я могу создать хороший zip-файл по содержанию. Однако file и foldernames со шведскими символами (ääö) путаются внутри zip-файла.

Использование (архивирование папки):

require_once('pclzip.lib.php');
$archive = new PclZip('archive.zip');
if ($archive->add('filestobezipped/') == 0) {
die('Error : '.$archive->errorInfo(true));
}

Я думаю, что есть некоторые проблемы с кодировкой символов. Но как это решить? Руководство пользователя библиотеки PclZip довольно сложно понять. В zip-формате используются CP437 и UTF-8. Мой PHP использует ISO8859-1.

2

Решение

Ну, я решил это сам, добавив функцию обратного вызова «myPreAddCallBack», которая запускается при добавлении каждого файла в архив. Он преобразует имена файлов в CP437. Документация по пареметру PCLZIP_CB_PRE_ADD: http://www.phpconcept.net/pclzip/user-guide/50

require_once('pclzip.lib.php');

function myPreAddCallBack($p_event, &$p_header)
{
$encoding = mb_detect_encoding($p_header['stored_filename']);
$p_header['stored_filename'] = iconv($encoding,"CP437",$p_header['stored_filename']);
return 1;
}

$archive = new PclZip('archive.zip');
if ($archive->add('filestobezipped/',PCLZIP_CB_PRE_ADD, 'myPreAddCallBack') == 0) {
die('Error : '.$archive->errorInfo(true));
}
1

Другие решения

В Utf-8 должны быть все шведские персонажи. Iso8859-1 нет. Для этого вы можете использовать string utf8_decode ( string $data ) просто запуск с расшифровкой имени zipfile :).

вы могли бы использовать
$archiveNameDecoded = utf8_decode('archivename.zip');
$archive = new PclZip(archiveNameDecoded);

0

По вопросам рекламы [email protected]