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

  • 相关阅读:
    java四种线程池类型以及可选择的阻塞队列
    复习-java向上转型
    synchronized 加在方法和代码块底层实现区别
    synchronized 和 lock 的区别
    hashmap-put方法过程
    mybatis-防止sql注入
    synchronized-粗略过程
    消息队列-观察者模式和发布订阅模式区别
    复习-进程的调度算法
    Chocolatey
  • 原文地址:https://www.cnblogs.com/zonghua/p/1288529.html
Copyright © 2011-2022 走看看