ZipFile 弄乱了汉字
ZipFile messes up Chinese characters
我正在处理一个用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);
}
试试这个:
using (ZipFile zip = new ZipFile())
{
zip.ProvisionalAlternateEncoding = System.Text.Encoding.UTF8;
zip.AddFiles(fileList, "files");
因为 DotNetZip 默认使用 IBM437(Encoding),所以您应该设置适当的编码,例如 Encoding.UTF8。
我正在处理一个用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);
}
试试这个:
using (ZipFile zip = new ZipFile())
{
zip.ProvisionalAlternateEncoding = System.Text.Encoding.UTF8;
zip.AddFiles(fileList, "files");
因为 DotNetZip 默认使用 IBM437(Encoding),所以您应该设置适当的编码,例如 Encoding.UTF8。