我的网站是将用户名(可能包含汉字)直接写入到Cookie中,以前,一直很正常。今天,不知怎么回事,登录网站后,汉字用户名全部显示成乱码,英文或数字正常,这是怎么回事啊??在web.config我已经设置了:
...
<globalization fileEncoding="gb2312"  requestEncoding="gb2312" responseEncoding="gb2312"/>
....还有一个问题,下载包含汉字的附件时,文件名也变成了乱码,这又如何解决?

解决方案 »

  1.   

    HTML代码中使用UNICODE编码。
      

  2.   

     <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
      

  3.   

    Web.config中如下设置试试:
        <globalization requestEncoding="utf-8" responseEncoding="utf-8"/>
    有时用gb2312就出乱码?不知这样改是否符合你的要求。
      

  4.   

    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    加到网页中
      

  5.   

    webconfig里加
      <globalization requestEncoding="utf-7" responseEncoding="utf-7"/> 试下吧楼主,我以前导出的中文文件名就是乱码,这样可以解决
      

  6.   

    <globalization requestEncoding="utf-8" responseEncoding="utf-8"/> 
      

  7.   

    我以前用的就是UTF-8!
    问题还没解决,请看下图:
    http://www.chinaobs.com/upgif/downloaderro.gif图中那个名称包含汉字,结果就成了乱码。
    下载代码:
            Dim m_fileStream As FileStream = New FileStream(fFullName, FileMode.Open, FileAccess.Read, FileShare.Read)
            Try
                If File.Exists(fFullName) Then
                    Dim m_totalLength As Long = m_fileStream.Length '  m_file.FileSize
                    Dim m_readLendth As Long = 0L
                    Page.Response.AddHeader("Content-Length", (CType((m_totalLength - m_readLendth), Long)).ToString())
                    Page.Response.ContentType = "application/octet-stream"
                    Page.Response.AddHeader("Content-Disposition", "attachment; filename=" + fName) 'fName,使用文件名作为默认的名称,实际是根据下载名来下载
                    Dim m_length As Integer = 0
                    Dim m_buffer() As Byte ' = New Byte(10240)  '10K 
                    m_buffer = New Byte(10240) {} '10k
                    While (m_totalLength - m_readLendth > 0)
                        '......
                    End While
                    Page.Response.End()
                End If
            Catch ex As Exception
            End Try
      

  8.   

    Page.Response.AddHeader("Content-Disposition", "attachment; filename=" + fName) 
    Response.Charset = "gb2312";
      

  9.   

    Page.Response.AddHeader("Content-Disposition", "attachment; filename=" + fName)  
    Response.Charset = "gb2312";
    ===================================================================
    还是不行啊
     fName 编码一下
    ========================================
    我在本地调试时,fname显示的是正确的汉字
      

  10.   

    Page.Response.AddHeader("Content-Disposition", "attachment; filename=encodeURIComponent(" + fName+")");
      

  11.   

    上面的可能有点小问题,再改改Page.Response.AddHeader("Content-Disposition", "attachment; filename=encodeURIComponent('" + fName+"')");
      

  12.   

    或者是Response.Charset = "GB2312"; 
    Response.ContentEncoding = System.Text.Encoding.UTF7; 
    Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(fName, Encoding.UTF8).ToString()); 
      

  13.   


    在配置文件中的<System.Web>下添加:
    <globalization requestEncoding="utf-8" responseEncoding="utf-8"/>  
    正解,我前两天就遇到这种问题
      

  14.   

    下载文件中文名乱码这样解决:if (是IE)  //  可以从 UserAgent 头判断是不是IE
    {
      filename = Server.UrlEncode(中文文件名);
    }如果是火狐,不需要编码,编码之后反倒是乱码
      

  15.   


    无效啊................如果这样,Server.UrlDecode(...)应该放在哪里?(就是怎样加入到我8楼的代码)
      

  16.   


    谢谢,我已经改了。现在问题是下载时中文显示乱码,无法解决!
    用下面的代码,虽然可以取消乱码,但是文件名却被修改成下载页面的名字的前半部分,如我的下载链接是:.../dls.aspx?fileid=13===>dls
    所以还是不符合要求!Page.Response.AddHeader("Content-Disposition", "attachment; filename=/" + server.urlencode(fName) + "/")
      

  17.   

    firefox下载文件,文件名编码错误!
      

  18.   

    看看这篇文章吧,应该对你很有帮助。http://www.cnblogs.com/onlyendure/archive/2008/03/25/StreamReader.html
      

  19.   


    Response.Charset = "GB2312"; 
    Response.ContentEncoding = System.Text.Encoding.UTF7; 
    Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(fName, Encoding.UTF8).ToString()); 这个也是无效的吗?
      

  20.   

     Page.Response.AddHeader("Content-Disposition", "attachment; filename=" +HttpContext.Server.UrlEncode( fName))
      

  21.   

    对fName加码,下载时再将fName解码试试
      

  22.   

    你的系统语言设置的问题
    如果IE显示汉字是编码问题
    请确认你的资源管理器是否不能显示汉字-->理由: 如果安装英文系统后,需要安装中文包一样.否则显示汉字是乱码控制面板-> Regional and Language Options