当前位置: 代码迷 >> ASP.NET >> Ionic.Zip 中打包下载后的中文文件名出现乱码有关问题
  详细解决方案

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

热度:1517   发布时间:2013-02-25 00:00:00.0
Ionic.Zip 中打包下载后的中文文件名出现乱码问题
求救,很急。。。最近做个项目,需要从打包下载文件到客户端。。。可是下载下来的文件中有如果是中文命名的就会出现????的字样,

我的源代码:
 
C# code
          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();        


------解决方案--------------------------------------------------------
改下 System.Text.Encoding.UTF8这个看看
C# code
/// <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;        }        }
  相关解决方案