压缩文件夹后,所有zip条目都会更改编码

Sribin

我们使用ASP.NET core,并具有以下代码:

public static void Compress(string sourceDirectoryName, string destinationArchiveFileName)
{
    var directoryName = Path.GetFileName(sourceDirectoryName);
    var remotePath = sourceDirectoryName.Split(new[] { directoryName }, StringSplitOptions.RemoveEmptyEntries).First();

    using (var zipStream = new MemoryStream())
    {
        using (var zip = new ZipArchive(zipStream, ZipArchiveMode.Create, true, Encoding.UTF8))
        {
            zip.CreateEntry(string.Concat(directoryName, directorySlash));

            foreach (var path in Directory.EnumerateFileSystemEntries(sourceDirectoryName, "*", SearchOption.AllDirectories))
            {
                if (!Directory.Exists(path))
                    zip.CreateEntryFromFile(path, path.RemoveSubString(remotePath).ReplacePathSeparatorOnSlash());
                else
                    zip.CreateEntry(string.Concat(path.RemoveSubString(remotePath).ReplacePathSeparatorOnSlash(), directorySlash));
            }
        }

        using (var outputZip = new FileStream(destinationArchiveFileName, FileMode.Create))
        {
            zipStream.Seek(0, SeekOrigin.Begin);
            zipStream.CopyTo(outputZip);
        }
    }
}

如果使用Windows资源管理器打开此归档文件,压缩包含俄语符号的sourceDirectoryName后,我们将看到以下内容:

在此处输入图片说明 并且标记为绿色的名称正确,标记为红色的名称的名称编码已更改。

如果我们使用以下代码:

ZipFile.CreateFromDirectory(sourceDirectoryName, destinationArchiveFileName);

我们有同样的问题。如何解决这个问题?

Sribin

我找到答案了。我必须使用编码866:

using (var zip = new ZipArchive(zipStream, ZipArchiveMode.Create, true, Encoding.GetEncoding(866)))
{
    ...
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用Gulp Zip压缩文件夹中的所有文件

如何使用7-zip批量解压缩文件夹中的所有文件?

没有__MACOSX文件夹的Mac zip压缩文件?

将文件夹中的所有子文件夹压缩为单个zip文件

将文件扩展名更改为 .zip 并从文档文件夹中解压缩文件

将一个文件夹中的所有未压缩文件压缩成一行

如何压缩文件夹中的所有文件并通过命令行擦除未压缩的版本?

使用Python 2.7.5将文件夹中的所有压缩文件解压缩到同一文件夹

如何解压缩文件夹的所有子文件夹中的所有rar档案,然后删除档案?

如何压缩文件夹内容并将具有Foldername的zip文件保存在同一文件夹中

命名压缩文件夹

用tar压缩文件夹?

用powershell压缩文件夹

如何批量压缩文件夹?

SAS-压缩文件夹

Microsoft压缩文件夹设置

压缩文件夹名称中没有包含目录的文件夹(tar)

如何使用7-zip分别压缩文件夹中的文件(每个文件)?

复制文件夹时压缩文件夹

如何解压缩文件并访问其中的所有文件夹和子文件夹并创建数据框?

使用vb.net,是否可以找到文件夹及其子文件夹中的所有压缩文件?

如何在不提取所有内容的情况下访问 gzip 压缩文件夹的子文件夹中的文件?

压缩文件夹及其所有内容,而无需在Python中保留目录结构

用golang压缩文件的文件夹会创建一个损坏的zip

使用python解压缩文件夹和子文件夹中的zip文件

android从zip文件解压缩文件夹并从该文件夹读取内容

有没有一种方法可以在大量文件夹上使用7zip单独压缩文件夹?

压缩文件夹tgz,编码为base64并即时发送

如何解压缩我的子目录中的所有 zip 文件夹?