zoukankan      html  css  js  c++  java
  • 【.net】在ASP.NET中,IE与Firefox下载文件名中带中文汉字的文件,文件名乱码的问题

    #问题:客户端为ie或Firefox,服务端为asp.net时,下载文件名中包含中文汉字时,下载下来的文件的文件名是乱码;

    #解决方案:

      示例代码:下载名称中带汉字的文件;

     1 public void ProcessRequest(HttpContext context)
     2 {
     3             string action = context.Request["action"].ToString();
     4             if (action == "download")
     5             {
     6                 string fileName = "资源统计详细信息.txt";//客户端保存的文件名
     7                 string filePath = context.Server.MapPath("资源统计详细信息.txt");//服务端文件路径
     8 
     9                 //以字符流的形式下载文件
    10                 FileStream fs = new FileStream(filePath, FileMode.Open);
    11                 byte[] bytes = new byte[(int)fs.Length];
    12                 fs.Read(bytes, 0, bytes.Length);
    13                 fs.Close();
    14 
    15                 #region 处理中文文件名乱码问题(ie及firefox下)
    16                 Encoding encoding;
    17                 string outputFileName = null;
    18                 string browser = HttpContext.Current.Request.UserAgent.ToUpper();
    19                 if (browser.Contains("MS") == true && browser.Contains("IE") == true)
    20                 {
    21                     outputFileName = HttpUtility.UrlEncode(fileName);
    22                     encoding = System.Text.Encoding.Default;
    23                 }
    24                 else if (browser.Contains("FIREFOX") == true)
    25                 {
    26                     outputFileName = fileName;
    27                     encoding = System.Text.Encoding.GetEncoding("GB2312");
    28                 }
    29                 else
    30                 {
    31                     outputFileName = HttpUtility.UrlEncode(fileName);
    32                     encoding = System.Text.Encoding.Default;
    33                 } 
    34                 #endregion
    35 
    36                 HttpContext.Current.Response.Clear();
    37                 HttpContext.Current.Response.Buffer = true;
    38                 HttpContext.Current.Response.ContentEncoding = encoding;
    39                 HttpContext.Current.Response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}.txt", string.IsNullOrEmpty(outputFileName) ? DateTime.Now.ToString("yyyyMMddHHmmssfff") : outputFileName));
    40                 HttpContext.Current.Response.BinaryWrite(bytes);
    41                 HttpContext.Current.Response.End();
    42 
    43             }
    44 }

    ------------------------------

  • 相关阅读:
    SQL Server数据库开发的二十一条军规
    session过期后在iframe里操作返回到login.html
    父页面与子页面之间调用时通过JS传值
    使用存储过程并返回值与及返回值的获得方法
    五种提高 SQL 性能的方法
    启动Oracle10G监听时报错 错误 1067:进程意外终止
    程序员必读书籍[分类好]
    心理学入门
    Net能做什么
    程序员要找到自己的兴趣所在
  • 原文地址:https://www.cnblogs.com/willingtolove/p/9454424.html
Copyright © 2011-2022 走看看