0

我有这个使用 .NET 库(压缩)的解压缩功能,但问题是我在文件名中有一些 unicode 问题,例如“µ”正在转换为“æ”

在不使用其他解压缩库的情况下是否有解决此问题的方法,因为我仅限于某些许可证,并且发现这一套最适合我

 using System.IO.Compression;

 private void Unzip()
    {
        try
        {
            string appPath = Path.GetDirectoryName(Application.ExecutablePath);

            // unzip update
            using (ZipArchive archive = System.IO.Compression.ZipFile.OpenRead(ZipFile))
            {

                foreach (ZipArchiveEntry entry in archive.Entries)
                {
                    string fullPath = Path.Combine(appPath, entry.FullName);
                    if (String.IsNullOrEmpty(entry.Name))
                    {
                        Directory.CreateDirectory(fullPath);
                    }
                    else
                    {
                        if (!entry.Name.Equals("Updater.exe"))
                        {
                            entry.ExtractToFile(fullPath,true);

                        }
                    }
                }

                //  UpdateProgress(((float)s.Position / (float)fileStream.Length) * 100F);
                //System.Threading.Thread.Sleep(extraWaitMilliseconds); //don't go too fast

            }
            UnzipFinished();  //*********^

        }            
        catch (Exception ex)
        {
        UnzipFailed(ex);
        }
    }
4

1 回答 1

0

我阅读了您对许可证的限制,但我认为,您会发现这篇关于 codeproject 的文章很有用。

它解释了如何使用带有点网包装器的 Windows 内部 ZIP,并且此链接中的讨论线程帮助我处理文件/目录名称中的特殊字符。

链接“C# Use Zip Archives without External Libraries”使用标题作为 google 搜索项将文章置于首位。基本上它是关于 MS.Internal.IO.Zip 的包装器。

于 2013-11-14T13:28:41.740 回答