DotNetZip编码问题

Xav*_*ver 3 .net c# dotnetzip

我正在使用DotNetZip.当我归档通常具有英文名称的文件时.但是当我在结果档案中存档带有俄文名称的文件时,文件名称不正确.有人说字符串

ZipConstants.DefaultCodePage = 866;
Run Code Online (Sandbox Code Playgroud)

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

pri*_*e23 18

zip.AlternateEncodingUsage = ZipOption.Always;
zip.AlternateEncoding = Encoding.UTF8;
Run Code Online (Sandbox Code Playgroud)


Che*_*eso 9

在DotNetZip中创建一个unicode zip文件:

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

如果您想要特定的特定代码页,那么您必须使用其他内容:

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

在使用之前,请检查这些属性的文档!

  • UseUnicodeAsNecessary已过时,建议使用以下代码:zip.AlternateEncodingUsage = ZipOption.Always; zip.AlternateEncoding = Encoding.UTF8; (4认同)