我的网站是将用户名(可能包含汉字)直接写入到Cookie中,以前,一直很正常。今天,不知怎么回事,登录网站后,汉字用户名全部显示成乱码,英文或数字正常,这是怎么回事啊??在web.config我已经设置了:
...
<globalization fileEncoding="gb2312" requestEncoding="gb2312" responseEncoding="gb2312"/>
....还有一个问题,下载包含汉字的附件时,文件名也变成了乱码,这又如何解决?
...
<globalization fileEncoding="gb2312" requestEncoding="gb2312" responseEncoding="gb2312"/>
....还有一个问题,下载包含汉字的附件时,文件名也变成了乱码,这又如何解决?
<globalization requestEncoding="utf-8" responseEncoding="utf-8"/>
有时用gb2312就出乱码?不知这样改是否符合你的要求。
加到网页中
<globalization requestEncoding="utf-7" responseEncoding="utf-7"/> 试下吧楼主,我以前导出的中文文件名就是乱码,这样可以解决
问题还没解决,请看下图:
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
Response.Charset = "gb2312";
Response.Charset = "gb2312";
===================================================================
还是不行啊
fName 编码一下
========================================
我在本地调试时,fname显示的是正确的汉字
Response.ContentEncoding = System.Text.Encoding.UTF7;
Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(fName, Encoding.UTF8).ToString());
在配置文件中的<System.Web>下添加:
<globalization requestEncoding="utf-8" responseEncoding="utf-8"/>
正解,我前两天就遇到这种问题
{
filename = Server.UrlEncode(中文文件名);
}如果是火狐,不需要编码,编码之后反倒是乱码
无效啊................如果这样,Server.UrlDecode(...)应该放在哪里?(就是怎样加入到我8楼的代码)
谢谢,我已经改了。现在问题是下载时中文显示乱码,无法解决!
用下面的代码,虽然可以取消乱码,但是文件名却被修改成下载页面的名字的前半部分,如我的下载链接是:.../dls.aspx?fileid=13===>dls
所以还是不符合要求!Page.Response.AddHeader("Content-Disposition", "attachment; filename=/" + server.urlencode(fName) + "/")
Response.Charset = "GB2312";
Response.ContentEncoding = System.Text.Encoding.UTF7;
Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(fName, Encoding.UTF8).ToString()); 这个也是无效的吗?
如果IE显示汉字是编码问题
请确认你的资源管理器是否不能显示汉字-->理由: 如果安装英文系统后,需要安装中文包一样.否则显示汉字是乱码控制面板-> Regional and Language Options