【问题标题】:DotNetZip trouble with russian encoding俄罗斯编码的 DotNetZip 问题
【发布时间】:2010-04-19 06:52:13
【问题描述】:

我在我的项目中使用 DotNetZip。

using (var zip = new ZipFile()) 
{ 
   zip.ProvisionalAlternateEncoding = System.Text.Encoding.GetEncoding(866); 
   zip.AddFile(filename, "directory\\in\\archive"); 
   zip.Save("archive.zip"); 
} 

一切正常,但是当我使用 AddDirectoryByName 方法时,我的目录名称不正确。

【问题讨论】:

  • 您是否正在使用任何特定的 ZIP 库?
  • “坏名声”是什么意思?你能发布一个具体的例子吗?
  • 我已经用最新的 DotNetZip 版本进行了尝试,没有出现异常:using (var zip = new ZipFile()) { zip.AlternateEncoding = Encoding.GetEncoding(866); zip.AddDirectoryByName("Россия"); zip.Save("archive.zip"); }

标签: c# .net dotnetzip


【解决方案1】:

通用的方法是:

zip.AlternateEncoding = Encoding.UTF8;
zip.ProvisionalAlternateEncoding = Encoding.GetEncoding(Console.OutputEncoding.CodePage);
zip.AlternateEncodingUsage = ZipOption.AsNecessary;

【讨论】:

    【解决方案2】:

    这种方式在新版本中对我有用

    zip.AlternateEncodingUsage = ZipOption.Always;
    zip.AlternateEncoding = Encoding.GetEncoding(866); 
    

    【讨论】:

      【解决方案3】:

      您可以先查看定义。 然后你会发现:

      public ZipFile(Encoding encoding);
      

      所以你可以使用这个:

      using (ZipFile zip = new ZipFile(Encoding.UTF8))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-30
        • 2018-08-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多