Ionic.Zip 中打包下载后的中文文件名出现乱码问题

matusharen 2011-08-14 11:42:10
求救,很急。。。最近做个项目,需要从打包下载文件到客户端。。。可是下载下来的文件中有如果是中文命名的就会出现????的字样,

我的源代码:
  
Teacher tea = (Teacher)Session["teacher"];
string a = tea.teach_id;
string filepath = Server.MapPath("~/");
//Directory.CreateDirectory(filepath+"download");
ZipFile zip = new ZipFile(filepath+"download.zip");
//zip.AddDirectory(filepath+"download");

for (int i = 0; i <= GridView1.Rows.Count - 1; i++)
{
CheckBox cbox = (CheckBox)GridView1.Rows[i].FindControl("CheckBox1");

if (cbox.Checked == true)
{
SQL mysql = new SQL();
string str = "select * from StuCourseFile where teach_id = '" + a + "'";
DataTable table = mysql.mytable(str);
string FilePath = table.Rows[i]["StuFilePath"].ToString();
string FileName = table.Rows[i]["StuFileName"].ToString();

zip.AddFile(FilePath+FileName,"");

}

}
Response.Clear();
Response.ContentType = "application/zip";
Response.AddHeader("content-disposition", "attachment;filename=" + HttpUtility.UrlEncode("reportdownload.zip", System.Text.Encoding.UTF8));
zip.Save(Response.OutputStream);
Response.End();
...全文
747 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
tht310 2011-09-27
  • 打赏
  • 举报
回复
ZipFile zip = new ZipFile(Encoding.Default);
.....
....
....
zip.Save(...)
matusharen 2011-08-16
  • 打赏
  • 举报
回复
求zip的打包方法
子夜__ 2011-08-14
  • 打赏
  • 举报
回复
改下 System.Text.Encoding.UTF8这个看看
/// <summary>
/// 压缩方法
/// </summary>
/// <param name="patch">预压缩的路径</param>
/// <param name="rarPatch">压缩后的路径</param>
/// <param name="rarName">压缩文件名</param>
public static void RARsave(string patch, string rarPatch, string rarName)
{
String the_rar;
RegistryKey the_Reg;
Object the_Obj;
String the_Info;
ProcessStartInfo the_StartInfo;
Process the_Process;
try
{
the_Reg = Registry.ClassesRoot.OpenSubKey(@"Applications\\WinRAR.exe\\Shell\\Open\\Command");
the_Obj = the_Reg.GetValue("");
the_rar = the_Obj.ToString();
the_Reg.Close();
the_rar = the_rar.Substring(1, the_rar.Length - 7);
Directory.CreateDirectory(patch);
//命令参数

//the_Info = " a " + rarName + " " + @"C:Test?70821.txt"; //文件压缩

the_Info = " a " + rarName + " " + patch + " -r"; ;
the_StartInfo = new ProcessStartInfo();
the_StartInfo.FileName = the_rar;
the_StartInfo.Arguments = the_Info;
the_StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
//打包文件存放目录

the_StartInfo.WorkingDirectory = rarPatch;
the_Process = new Process();
the_Process.StartInfo = the_StartInfo;
the_Process.Start();
the_Process.WaitForExit();
the_Process.Close();
}
catch (Exception ex)
{
throw ex;
}
}

/// <summary>
///解 压缩方法
/// </summary>
/// <param name="patch">预解压缩的路径</param>
/// <param name="rarPatch">解压缩后的路径</param>

public static int unRAR(string unRarPatch, string rarPatch)
{

try
{
System.Diagnostics.Process Process1 = new System.Diagnostics.Process();
Process1.StartInfo.FileName = "Winrar.exe";
Process1.StartInfo.CreateNoWindow = true;
Process1.StartInfo.Arguments = " e " + unRarPatch + " " + rarPatch + " -y";
Process1.Start();
Process1.WaitForExit();
if (Process1.HasExited)
{
return Process1.ExitCode;
}
return -1000;
}
catch (Exception ex)
{
return -1001;
}
}


参考
matusharen 2011-08-14
  • 打赏
  • 举报
回复
求救啊。。
tomysea 2011-08-14
  • 打赏
  • 举报
回复
没用过,只能帮顶了
编码问题是一个永远热门的问题...
matusharen 2011-08-14
  • 打赏
  • 举报
回复
有谁知道不啊?求救啊

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧