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,转载请注明原文地址,谢谢

  • 相关阅读:
    day_07 深浅拷贝
    day_06 再谈编码
    day_05 字典
    day_04 列表
    day_03 字符串
    HDU 1049 Climbing Worm
    HDU 1720 A+B Coming
    Pascal向C++的跨越
    B-Boxes
    喵哈哈村的狼人杀大战(4)
  • 原文地址:https://www.cnblogs.com/zonghua/p/1288529.html
Copyright © 2011-2022 走看看