我正在使用 DotNetZip。当我归档所有通常具有英文名称的文件时。但是当我在结果存档中使用错误名称的文件存档带有俄语名称的文件时。有人说那串
ZipConstants.DefaultCodePage = 866;
但它无法编译。我还使用 zip.UseUnicodeAsNecessary 属性,并将我的文件名转换为 utf8 和 utf7。
zip.AlternateEncodingUsage = ZipOption.Always;
zip.AlternateEncoding = Encoding.UTF8;
要在 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");
}
在使用它们之前检查这些属性的文档!