ZipFile弄乱了汉字

时间:2015-04-15 01:48:10

标签: c# asp.net

我正在使用在C#/ Asp.Net中执行下载的项目,文件中可能包含中文字符。下载单个文件时,中文文件名会正确显示。但是,在ZipFile下载多个文件时,文件夹中的文件将显示为????____的中文字符。如何使ZipFile保持文件名的非ASCII字符不变?

这是多个文件下载代码:

using (ZipFile zip = new ZipFile())
{
       // fileList is of type List<string>                                            
       zip.AddFiles(fileList, "files");

       Response.Clear();
       Response.ClearHeaders();
       Response.ContentType = "application/zip";
       Response.AppendHeader("content-disposition", "filename=file.zip");
       zip.Save(Response.OutputStream);
       Response.End();
  }

下载单个文件的代码:

if (File.Exists(Path))
{
    FileInfo fileInfo = new FileInfo(Path);

    Response.Clear();
    Response.ClearHeaders();
    Response.ContentType = "application/x-download";
    Response.AppendHeader("Content-Disposition", "attachment; filename=\"" + filename + "\"");

    Response.TransmitFile(fileInfo.FullName);
    Response.End();

    File.Delete(Path);
}

1 个答案:

答案 0 :(得分:3)

试试这个:

using (ZipFile zip = new ZipFile())
{
     zip.ProvisionalAlternateEncoding = System.Text.Encoding.UTF8;
     zip.AddFiles(fileList, "files");

这是因为DotNetZip默认使用IBM437(编码),所以你应该设置适当的编码,比如Encoding.UTF8。