ZipFile (System.IO.Compression)、c# (WPF) 的字符提取问题
Posted
技术标签:
【中文标题】ZipFile (System.IO.Compression)、c# (WPF) 的字符提取问题【英文标题】:char extraction issue with ZipFile (System.IO.Compression), c# (WPF) 【发布时间】:2020-01-14 13:42:11 【问题描述】:我正在尝试提取包含多个文件的 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);
有人能告诉我错误吗?
【问题讨论】:
我经历了一堆不同的编码,但我找不到§
的编码与õ
的UTF-8编码相同的编码...事实上,õ
的 UTF-8 编码是 2 个字节:您确定只有单个 §
字符被转换为 õ
,或者它可能采用 (
或 )
之一也一样?
我也搜索了相关性,但没有找到。只翻译单个字符。
我现在尝试了一个不同的库:ionic.Zip 结果:这次我得到“⌡”(下半部分积分)而不是“§”
【参考方案1】:
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
【讨论】:
非常感谢!这有帮助。 在哪里可以看到关于它在 4.8 中被修复的信息?没有一个链接提到它?以上是关于ZipFile (System.IO.Compression)、c# (WPF) 的字符提取问题的主要内容,如果未能解决你的问题,请参考以下文章