ZipFile (System.IO.Compression)、c# (WPF) 的字符提取问题

char extraction issue with ZipFile (System.IO.Compression), c# (WPF)

我正在尝试解压缩包含多个文件的 zip。某些文件的名称中包含“§”字符 ("abc(§7)abc.txt")。 开箱时,

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

但是,“§”字符被翻译成“õ”(带波浪符的拉丁文小写字母 O)字符。

我已经尝试过更改编码。但是只有ASCII或者UTF-8(默认)

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

有人能告诉我错误吗?

Windows 不能很好地处理 zip 中的 unicode 文件名。 使用 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