我有一个zip文件,我正在尝试解压缩;里面有一个文件 有一个编码(我认为UTF8?)文件名而不是“ímynd.dd”它将名称更改为“Ãmynd.dd”
这是我的代码:
use Archive::Zip qw( :ERROR_CODES );
my $testsArchive = "master.zip";
my $testsDirectory = "master/";
my $zip = Archive::Zip->new();
die 'read error' unless ( $zip->read( $testsArchive ) == AZ_OK );
$zip->extractTree( '', $testsDirectory );
您可以从此处下载zip文件: https://github.com/log2timeline/dfvfs/archive/master.zip
我正在使用该库的1.57版本,在win7,perl 5.22.1上。 如果我在OS X上运行相同的代码它会工作文件,所以它与Windows上的charset编码有关,但我不知道如何修复它。
谢谢!
答案 0 :(得分:4)
来自cpan.org
$Archive::Zip::UNICODE
此变量控制如何将Unicode文件和目录名称添加到存档或从存档中提取。如果设置,则文件和目录名称被视为UTF-8编码。这是实验和BUGGY(Win32上有一些边缘情况)。请报告问题。
{
local $Archive::Zip::UNICODE = 1;
$zip->addFile('Déjà vu.txt');
}
链接:cpan