Net core Разархивируйте файл с символами, отличными от ASCII

У меня есть задача извлечь файлы из zip архива. К сожалению, как я понял из другого вопроса здесь, проводник Windows в win10 по-прежнему использует cp866 для кодирования имен файлов внутри файла архива. .NET Core не поддерживает эту кодовую страницу, поэтому извлечение архива приводит к нечитаемым символам. Aspose.Zip столкнулся со мной с точно такой же проблемой. Есть ли способ решить эту проблему в стеке .net core 3.1? Может быть, в .net 5?

1 ответ

Решение

По умолчанию и .NET Core 3.1, и .NET 5+ включают ограниченный набор кодировок из коробки. Но вы можете исправить это только парой строк кода: вам просто нужно зарегистрировать поставщика настраиваемого кодирования (см. Https://docs.microsoft.com/en-us/dotnet/api/system.text.codepagesencodingprovider?view= net-5.0 ) и вуаля - получить нужную кодировку по ее номеру:

      Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
var encoding = Encoding.GetEncoding(866);

Затем вы можете легко извлекать файлы из zip-архива, заархивированного в Win Explorer, без проблем с символами, отличными от ascii.

Другие вопросы по тегам