We're sorry Aspose doesn't work properply without JavaScript enabled.

Free Support Forum - aspose.com

Aspose.zip for .net 解压中文乱码

zip压缩包里面有中文文件名的文件,解压后是乱码,请问有办法处理?
使用的是最新的.net 版aspose.zip

@gsh365,

请ZIP并在此处附加以下资源进行测试:

  • 您遇到此问题的ZIP文件
  • .NET的Aspose.ZIP生成的输出文件显示了不良行为
  • 一个独立的简单控制台应用程序(无编译错误的源代码),可帮助我们最终重现当前问题并将其附加到此处进行测试。 请不要在其中包含.NET DLL文件的Aspose.ZIP,以减小文件大小。

在您准备好这些信息后,我们将开始对您的方案/问题进行进一步调查,并为您提供更多信息。

Desktop.zip (1.7 KB)此压缩包内的文件名包含中文,解压出来后文件名乱码。

使用的代码就是官方的github示例代码 ,e.Entry.Name 会乱码。

@gsh365,

请检查此ZIP文件是否包含中文名称的文本文件。

之后,通过使用以下用于.NET 20.11的Aspose.ZIP代码,我可以成功解压缩存档,而不会破坏中文文件名。

using (FileStream fs = File.OpenRead(@"C:\Temp\Desktop\sample.zip"))
{
    using (Archive archive = new Archive(fs))
    {
        archive.Entries[0].Extract(@"C:\Temp\Desktop\az\" + archive.Entries[0].Name);
    }
}

您能否列出我们可以按照此步骤重现此确切问题的完整步骤? 谢谢您的合作。

image.png (8.5 KB)
这是我的测试结果。附件是测试代码和zip文件,Desktop.zip (1.7 KB)
ConsoleApp1.zip (1.5 MB)

@gsh365,

我们已在问题跟踪系统中记录了此问题。 您的票号是ZIPNET-601。 我们将进一步调查该问题的详细信息,并将使您随时了解链接问题的状态。 很抱歉给您带来不便。

@gsh365,

关于ZIPNET-601,我们认为条目名称没有乱码。 最有可能的是,控制台存在编码问题。 我们修改了代码,以将文件名打印到具有UTF-8编码的文本文件中:

static void Main(string[] args)
{
    using (new FileInfo("filename.txt").Open(FileMode.Create))
    {
    }

    using (FileStream fs = File.OpenRead(@"desktop.zip"))
    {
        Console.WriteLine("--------desktop.zip----------");
        using (Archive archive = new Archive(fs))
        {
            foreach (var item in archive.Entries)
            {
                Console.WriteLine(item.Name);
                File.AppendAllLines("filename.txt", new[] { item.Name }, Encoding.UTF8);
            }
        }
    }

    Console.WriteLine("--------sample.zip----------");
    using (FileStream fs = File.OpenRead(@"sample.zip"))
    {
        using (Archive archive = new Archive(fs))
        {
            foreach (var item in archive.Entries)
            {
                Console.WriteLine(item.Name);
                File.AppendAllLines("filename.txt", new[] { item.Name }, Encoding.UTF8);
            }
        }
    }

    Console.ReadKey();
}

filename.txt似乎存储带有中文符号的正确名称。 请查看附件:filename.zip (236 Bytes)

这就是我们最终看到的方式:filenames.png (17.5 KB)

请让我们知道这些名称在您的末端是否正确?