DotNetZip проблема с кодированием - PullRequest
3 голосов
/ 02 апреля 2010

Я использую DotNetZip. Когда я архивирую файл с английским именем все нормально. но когда я архивирую файл с русскими именами в результате архив с плохими именами файла. Некоторые люди говорили, что строка

ZipConstants.DefaultCodePage = 866;

Но это не компиляция. Я также использую свойства zip.UseUnicodeAsNe Необходимые свойства и преобразую имена файлов в utf8 и utf7.

Ответы [ 3 ]

18 голосов
/ 07 февраля 2012
zip.AlternateEncodingUsage = ZipOption.Always;
zip.AlternateEncoding = Encoding.UTF8;
9 голосов
/ 07 апреля 2010

Чтобы создать файл почтового индекса Unicode в DotNetZip:

using (var zip = new ZipFile())
{
   zip.UseUnicodeAsNecessary= true;
   zip.AddFile(filename, "directory\\in\\archive");
   zip.Save("archive.zip");
}

Если вы хотите конкретную, конкретную кодовую страницу, то вы должны использовать что-то еще:

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

Проверьте документацию на эти свойства перед их использованием!

2 голосов
/ 15 января 2016

попробуйте

zip.AddEntry("yourfile.txt", "yourtext", Encoding.GetEncoding("utf-8"));

тип кодировки: информация о типе кодировки

...