【问题标题】:Change the character set of a file when extracting a zip解压 zip 时更改文件的字符集
【发布时间】:2016-06-06 10:44:55
【问题描述】:

我有一个要解压缩的 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

我在 win7 上使用 1.57 版的库,perl 5.22.1。 如果我在 OS X 上运行相同的代码,它可以工作文件,所以它与 Windows 上的字符集编码有关,但我不知道如何修复它。

谢谢!

【问题讨论】:

    标签: perl character-encoding zip


    【解决方案1】:

    来自 cpan.org

    $Archive::Zip::UNICODE
    

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

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

    链接:cpan

    【讨论】:

    • 谢谢,我已经尝试过,它成功了一半。它提取文件,但引发错误并崩溃。我不确定这是否与报告的错误或我的代码有关。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多