4

我正在使用 DotNetZip。当我归档所有通常具有英文名称的文件时。但是当我在结果存档中使用错误名称的文件存档带有俄语名称的文件时。有人说那串

ZipConstants.DefaultCodePage = 866;

但它无法编译。我还使用 zip.UseUnicodeAsNecessary 属性,并将我的文件名转换为 utf8 和 utf7。

4

3 回答 3

19
zip.AlternateEncodingUsage = ZipOption.Always;
zip.AlternateEncoding = Encoding.UTF8;
于 2012-02-07T06:41:32.037 回答
9

要在 DotNetZip 中创建 unicode zip 文件:

using (var zip = new ZipFile())
{
   zip.UseUnicodeAsNecessary= true;
   zip.AddFile(filename, "directory\\in\\archive");
   zip.Save("archive.zip");
}

如果你想要一个特定的、特定的代码页,那么你必须使用别的东西:

using (var zip = new ZipFile())
{
   zip.ProvisionalAlternateEncoding = System.Text.Encoding.GetEncoding(866);
   zip.AddFile(filename, "directory\\in\\archive");
   zip.Save("archive.zip");
}

在使用它们之前检查这些属性的文档!

于 2010-04-06T21:05:33.200 回答
2

试试这个

zip.AddEntry("yourfile.txt", "yourtext", Encoding.GetEncoding("utf-8"));

编码类型: 编码类型信息

于 2016-01-15T10:46:06.267 回答