请问问什么我在直接打开中文附件时名称会变成乱码!而如果选择另存名称就是正确的,我该如何解决,谢谢!(kunting)

解决方案 »

  1.   

    试试看,看是不是把web.config里面的 <globalization requestEncoding="utf-8" responseEncoding="utf-8"/>
    改成<globalization  requestEncoding="gb2312" responseEncoding="gb2312"/>
      

  2.   

    <globalization fileEncoding="gb2312"  requestEncoding="gb2312" responseEncoding="gb2312"/>
      

  3.   

    try:
    add the following code before render your attachment,
    Response.ContentEncoding = System.Text.Encoding.GetEncoding("utf-8"); //or gb2312
      

  4.   

    这些方法我都有试过了,如果用asp一点问题都没有!
    下面是我的代码:
    <globalization requestEncoding="GB2312" responseEncoding="GB2312" fileEncoding="gb2312"/>
    Response.Charset = "GB2312";
    Response.ContentEncoding =System.Text.Encoding.GetEncoding("GB2312");Response.ContentType = fileType;
    Response.AddHeader("Content-Disposition", "attachment; filename="+System.Web.HttpUtility.UrlEncode(fileName));//.UrlEncode(fileName,System.Text.Encoding.UTF8));
    Response.BinaryWrite(context);
    Response.Flush();
    Response.End();
      

  5.   

    是不是.NET的内部编码是采用utf8编码的员工缘故呢,我如何能改变内部编码呢
      

  6.   

    其实不是乱码,是URLENCODE过的名字,我也一直希望能解决这个问题.
    关注,顺带帮你顶
      

  7.   

    谢谢!如果用URLENCODE过的名字直接打开附件,会存在无法附件的现象,提示是无法找到该文件,我想这个问题应该是由于名称转换后过常引起的!看来应该微软的问题了
      

  8.   

    globalization requestEncoding="GB2312" responseEncoding="GB2312" fileEncoding="gb2312"/  这个位置没必要修改  还原回原来的旧可以了
      

  9.   

    看来实在不成只能用asp来完成这项任务了!
      

  10.   

    是文件名被unicode编码后的结果,不是乱码,而且如果中文字符过长,编码后的长度超过256个字符,就会报错,打不开文件,还没找到什么好的解决办法
      

  11.   

    以前在传递中文参数时,用过了HttpUtility.UrlEncode(str,System.Text.Encoding.Default)编码和用HttpUtility.UrlDecode(str,System.Text.Encoding.Default)来解码,其中默认字符集为gb2312。结果是令人失望的!不知道是什么原因某些汉字它解不出来。只好用脚本encodeURI方法来处理中文字符的问题了!
      

  12.   

    看来遇到我这样问题的人不在少数!不知道这算不算微软的一个bug