zoukankan      html  css  js  c++  java
  • [导入]response.writefile下载文件乱码解决

    string clientFileName = HttpUtility.UrlEncode(clientFileName, System.Text.Encoding.UTF8);

    clientFileName = clientFileName.Replace(”+”, “%20″);

    Response.Clear();
    Response.ClearHeaders();
    Response.Buffer = false;
    Response.AppendHeader(”Content-Disposition”, “attachment;filename=” + clientFileName);

    //Response.AppendHeader(”Content-Length”, fi.Length.ToString());
    Response.ContentType = “application/msword”;
    Response.WriteFile(filePath);
    Response.Flush();
    Response.End();
    clientFileName = clientFileName.Replace(”+”, “%20″);这个可以解决中文文件名中包含空格的问题,UrlEncode编码后会把文件名中的空格转换中+(+转换为%2b),但是浏览器是不能理解加号为空格的,所以在浏览器下载得到的文件,空格就变成了加号;
    解决办法:UrlEncode 之后, 将 “+” 替换成 “%20″,因为浏览器将%20转换为空格

    本来以为这样下载时候保存的文件名乱码问题就可以解决了,但还是不行,最后我同事帮我解决了,原来是

    clientFileName这个文件名变量是中文,而且是我从另外一个页面传值过来的。

    注意:尽量少使用url去传输文件名,url传输文件名确实会造成传输内容不准确的,还是传输id之类的比较可靠

    原来是这个问题。。晕。。

    原文链接:http://aspx1314.cn/?p=300,转载请注明原文地址,谢谢

  • 相关阅读:
    元素和容器, Model and View
    KeyboardHook in C#
    项目步骤
    对编程的思考
    Web开发中使用数据库的3种方式
    动态得到属性的名字
    WPF Databinding examples
    【SPOJ】220 Relevant Phrases of Annihilation
    【FOJ】2075 Substring
    【UVa】760 DNA Sequencing
  • 原文地址:https://www.cnblogs.com/zonghua/p/1288529.html
Copyright © 2011-2022 走看看