Беда DotNetZip с русской кодировкой - PullRequest
5 голосов
/ 19 апреля 2010

Я использую DotNetZip в моем проекте.

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

все хорошо, но когда я использую метод AddDirectoryByName, у меня плохие имена каталогов.

Ответы [ 3 ]

8 голосов
/ 28 декабря 2011

Универсальный способ для всех:

zip.AlternateEncoding = Encoding.UTF8;
zip.ProvisionalAlternateEncoding = Encoding.GetEncoding(Console.OutputEncoding.CodePage);
zip.AlternateEncodingUsage = ZipOption.AsNecessary;
5 голосов
/ 03 июля 2014

Так у меня в новой версии работает

zip.AlternateEncodingUsage = ZipOption.Always;
zip.AlternateEncoding = Encoding.GetEncoding(866); 
3 голосов
/ 21 сентября 2016

Вы можете сначала посмотреть определение. Тогда вы найдете это:

public ZipFile(Encoding encoding);

Так что вы можете использовать это:

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