zip压缩包里面有中文文件名的文件,解压后是乱码,请问有办法处理?
使用的是最新的.net
版aspose.zip
请ZIP并在此处附加以下资源进行测试:
- 您遇到此问题的ZIP文件
- .NET的Aspose.ZIP生成的输出文件显示了不良行为
- 一个独立的简单控制台应用程序(无编译错误的源代码),可帮助我们最终重现当前问题并将其附加到此处进行测试。 请不要包含 Aspose.ZIP for .NET API 的 DLL 文件以减小文件大小。
在您准备好这些信息后,我们将开始对您的方案/问题进行进一步调查,并为您提供更多信息。
请检查此ZIP文件是否包含中文名称的文本文件。
- sample.zip (165 Bytes)
之后,通过使用以下用于.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);
}
}
您能否列出我们可以按照此步骤重现此确切问题的完整步骤? 谢谢您的合作。
关于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)
请让我们知道这些名称在您的末端是否正确?