zoukankan      html  css  js  c++  java
  • dotnet 文件下载后文件名乱码

    Response.ContentType = "application/x-msdownload;Charset=utf-8";

    首先是Encoding

    Response.ContentEncoding = System.Text.Encoding.UTF8;


    然后是FileName的地方用

    System.Web.HttpUtility.UrlEncode(name)

    然后把用于响应输出的aspx文件保存为UTF-8格式
    最后是在webconfig里面设置

    <globalization requestEncoding="UTF-8" responseEncoding="UTF-8"/>

    一个解决办法是,:

     在HttpUtility  的UrlEncode之后,  将  "+" 替换成"%20"(如果原来是 "+"   则被转换成"%2b" ), 如:  
      fileName=HttpUtility.UrlEncode(fileName,   Encoding.UTF8);  
      fileName=fileName.Replace("+",   "%20");  
      不明白微软为什么要把空格转换成加号而不是"%20".记得JDK的UrlEncoder是将空格转换成"%20"的.  
      经检查,在.Net2.0也是这样.  

    =========================================================================

    string fileName="中文.xls";

    string filePath = @"/UpLoad/Reports"

    FileInfo file = new FileInfo(System.Web.HttpContext.Current.Server.MapPath(filePath)+fileName);
       Response.Charset = "utf-8";
       Response.ContentEncoding = System.Text.Encoding.UTF8;

       // 添加头信息,为"文件下载/另存为"对话框指定默认文件名
       Response.AddHeader("Content-Disposition", "attachment; filename=" +HttpUtility.UrlEncode("下载文件"+".xls",System.Text.Encoding.UTF8));
       // 添加头信息,指定文件大小,让浏览器能够显示下载进度
       Response.AddHeader("Content-Length", file.Length.ToString());
       // 指定返回的是一个不能被客户端读取的流,必须被下载
       Response.ContentType = "application/ms-excel";
       // 把文件流发送到客户端
       Response.WriteFile(file.FullName);
       // 停止页面的执行
       Response.End();

  • 相关阅读:
    Python源码阅读(一、环境准备)
    PDF ITextSharp
    模式对话框 打开文件
    MongoDB 最初级步骤
    DataGrid中取HyperLinkColumn列的值,处理DataGrid中绑定的特殊字符
    oracle 将科学计数法数据转换为非科学计数法数据
    Eval 表达式 GridView ItemCommand
    回车,根据编码获取相应记录,然后再将这录绑定到AutoList
    MongoDB 日期 插入时少8小时
    日期给空值
  • 原文地址:https://www.cnblogs.com/shineqiujuan/p/1335825.html
Copyright © 2011-2022 走看看