Кодировка имен файлов в Zip

Есть zip-архив, который нужно распаковать с помощью SharpCompress (требование начальника использовать именно эту библиотеку), но при распаковке архива русские буквы превращаются в кракозябры (например название папки "исходные данные" превращаются в "¿ßσ«ñ¡δÑ ñá¡¡δÑ").

using Stream stream = File.OpenRead(archive);
using var reader = ReaderFactory.Open(stream);
    while (reader.MoveToNextEntry())
    {
      if (!reader.Entry.IsDirectory)
      {
        reader.WriteEntryToDirectory(dectDir, extractionOptions);
      }
    }

Я пробовал сделать распаковку с использованием 1251 кодировки, но это также не помогает, "исходные данные" превращаются в "Ёб室­лҐ ¤ ­­лҐ".

var opts = new ReaderOptions();
var encoding = Encoding.GetEncoding(1251);
opts.ArchiveEncoding = new()
{
    CustomDecoder = (data, x, y) =>
    {
        return encoding.GetString(data);
    }
};
using Stream stream = File.OpenRead(archive);
using var reader = ReaderFactory.Open(stream,opts);
while (reader.MoveToNextEntry())
{
    if (!reader.Entry.IsDirectory)
    {
        reader.WriteEntryToDirectory(dectDir, extractionOptions);
    }
}

PS. В перспективе архивы могут быть не только zip, поэтому используется stream, что позволяет автоматически распознавать тип архива.


Ответы (0 шт):