C# ZipFile.CreateFromDirectory 编码

Posted

技术标签:

【中文标题】C# ZipFile.CreateFromDirectory 编码【英文标题】:C# ZipFile.CreateFromDirectory Encoding 【发布时间】:2016-06-15 02:18:06 【问题描述】:

我有一个法语文件“Dans mes rêves.mp3”。在 C# 中,当我使用 ZipFile.CreateFromDirectory("/path/to/folder/with/FrenchMp3", "ArchiveName.zip") 时,我在生成的 zip 文件中看到“Dans mes rÛves.mp3”。

似乎是编码?我该如何解决这个问题?

我尝试了以下方法,但没有成功:

ZipFile.CreateFromDirectory("/path/to/folder/with/FrenchMp3", "ArchiveName.zip",CompressionLevel.Optimal, false, Encoding.GetEncoding("iso-8859-1"));

在调试器中,文件名确实显示为“Dans mes rêves.mp3”。

【问题讨论】:

iso-8859-1 没有完全覆盖所有法语字符。你试过不同的编码吗? 好吧,我对编码不太熟悉,但我尝试了UTF8Unicodeiso-8859-1 直到iso-8859-5 尝试使用 Encoding.GetEncoding(850)。奇怪的是,这适用于通常的 ISO-8859-1 和 1252 不起作用的斯堪的纳维亚字符。 【参考方案1】:

测试

ZipFile.CreateFromDirectory("/path/to/folder/with/FrenchMp3", "ArchiveName.zip",CompressionLevel.Optimal, false, Encoding.GetEncoding(850));

使用“Dans mes rêves.mp3”,它可以正常工作。

【讨论】:

按照这个答案,我想知道 850 代表什么。经过一番谷歌搜索,我发现了这个有趣的网站,以防有人需要它:ascii-codes.com/cp850.html

以上是关于C# ZipFile.CreateFromDirectory 编码的主要内容,如果未能解决你的问题,请参考以下文章

C#进阶C# 泛型

C#进阶C# 匿名方法

C#进阶C# 多线程

C# 教程

[C#教程01]C# 简介

用 C# 编写 C# 编译器,先有鸡还是先有蛋?