解压缩时更改文件的字符集

时间:2016-06-06 10:44:56

标签: perl character-encoding zip

我有一个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编码有关,但我不知道如何修复它。

谢谢!

1 个答案:

答案 0 :(得分:4)

来自cpan.org

$Archive::Zip::UNICODE

此变量控制如何将Unicode文件和目录名称添加到存档或从存档中提取。如果设置,则文件和目录名称被视为UTF-8编码。这是实验和BUGGY(Win32上有一些边缘情况)。请报告问题。

    {
        local $Archive::Zip::UNICODE = 1;
        $zip->addFile('Déjà vu.txt');
    }

链接:cpan