那是文件编码方面的问题吧,附件好象是BASE64编码

解决方案 »

  1.   

    mbm(-- (@ \/ @) --) 说得对,只要将需要显示的文件名经过Server.UrlEncode(string)处理就能解决乱码的问题。
      

  2.   

    crystal2000,请你给一段详细的代码好吗?
    我是这样做的,可是还是无法正确显示中文文件名,而是b++ ++.doc
    dim strfile as string = server.urlencode("中文.doc")
    response.appendheader("content-disposition","attachment;filename=" & strfile)
    我还拉下那些需要的设置没有做吗?
    感谢大家讨论这个问题,给我的帮助.
      

  3.   

    response.appendheader("Content-Language" ,"zh");
      

  4.   

    Response.ClearHeaders();
    Response.AppendHeader("Content-Language","zh");Response.AppendHeader("Content-Disposition", "attachment; filename=" + Server.UrlEncode(fileName));
    这是我的代码
      

  5.   

    我来做个总结吧
    其实楼上的方法是可行的,但有局限性关键在于UrlEncode这个东东,在下面不同情况下的结果是不一样的
    1。web.config 里responseEncoding="gb2312" 
    2。web.config 里responseEncoding="utf-8"
    使用Server.UrlEncode的话必须responseEncoding="utf-8"才会正确
    所以不要用Server.UrlEncode,换HttpUtility.UrlEncode
    string s=HttpUtility.UrlEncode(System.Text.UTF8Encoding.UTF8.GetBytes("中文.txt"));
    Response.AppendHeader("Content-Disposition", "attachment; filename=" + s);
      

  6.   

    loverains(爱雨) 你说得对,在中文转换后,如果你的文件名有空格,会出现+的符号。这一点是要特别注意的。
    例子如下:
    Response.AppendHeader("Content-Disposition", "attachment;Content-Type:" + fileType  + ";Content-Transfer-Encoding: base64;filename=" + Server.UrlEncode(fileName ));
      

  7.   

    呵呵,空格easy呀
    string s=HttpUtility.UrlEncode(System.Text.UTF8Encoding.UTF8.GetBytes("中 文.txt")).Replace('+',' ');
      

  8.   

    我的web.config & machine.config 中都有responseEncoding="gb2312" 
    那么使用编码的时候,就必须使用HttpUtility.UrlEncode(System.Text.UTF8Encoding.UTF8.GetBytes("中文.txt"));
    是吗?