проблема извлечения символа с помощью ZipFile (System.IO.Compression), c# (WPF) - PullRequest
1 голос
/ 14 января 2020

Я пытаюсь извлечь ZIP с несколькими файлами. У некоторых файлов в именах есть символ «§» ( «ab c (§7) ab c .txt» ). При распаковке

System.IO.Compression.ZipFile.ExtractToDirectory(string sourceArchiveFileName, string destinationDirectoryName);

, однако символ «§» переводится в символ «õ» (латинская строчная буква O с тильдой).

Я уже пытался изменить кодировку , Но есть только ASCII или UTF-8 (по умолчанию)

System.IO.Compression.ZipFile.ExtractToDirectory(sourceArchiveFileName, destinationDirectoryName, Encoding entryNameEncoding);

Может кто-то показать мне ошибку?

1 Ответ

0 голосов
/ 15 января 2020

Windows не очень хорошо работает с именами файлов Unicode внутри zip. Использование Enconding 850 решает проблему.

Encoding.GetEncoding(850);

Похоже, что это исправлено в. Net framework 4.8, но я не могу сейчас это проверить.

Источники:

https://devblogs.microsoft.com/oldnewthing/20180515-00/?p=98755 http://archives.miloush.net/michkap/archive/2012/01/04/10252916.html

...