文件下载时的乱码问题?

ttyp 2004-10-14 02:58:05
文件下载时,提示时的文件名为乱码,保存时是正确的名字,打开时是Server.UrlEncode后的名字,看了很多帖子,都没解决

webconfig:

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

code:


string destFileName = Request.QueryString["destFileName"]!=null?Request.QueryString["destFileName"]:""; //destFileName为Server.UrlEncode后的名称

destFileName = Server.MapPath(".")+destFileName;
destFileName = Server.UrlDecode(destFileName);
if(File.Exists(destFileName))
{
FileInfo file = new FileInfo(destFileName);
Response.Clear();
Response.ClearHeaders();
Response.Buffer = false;

Response.ContentEncoding=System.Text.Encoding.GetEncoding("gb2312");
Response.Charset = "gb2312";
Response.AppendHeader("Content-Disposition","attachment;filename=" + HttpUtility.UrlEncode(Path.GetFileName(destFileName),System.Text.Encoding.GetEncoding("gb2312") ));
Response.AppendHeader("Content-Length",file.Length.ToString());
Response.ContentType="application/octet-stream";


Response.WriteFile(destFileName);

Response.Flush();
Response.End();




}
else
{
Response.Write("<script langauge=javascript>alert('文件不存在!');history.go(-1);</script>");
Response.End();
}
...全文
164 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuby5228 2004-11-03
  • 打赏
  • 举报
回复
密切关注中,我也遇到了类似的问题。
xiaohutushen 2004-10-17
  • 打赏
  • 举报
回复
帮你UP我的也是类似的问题。
刚开始的时候还好好的。可是第二天开始下载的时候文件名就成了乱码了。
保存的时候也不行.
ttyp 2004-10-14
  • 打赏
  • 举报
回复
to yuewenbin(学习NET):都去掉过,System.Text.Encoding.UTF8也改过,没效果!

断点调试时:
string destFileName = Request.QueryString["destFileName"]!=null?Request.QueryString["destFileName"]:""; //destFileName为Server.UrlEncode后的名称
这句,还没UrlDecode,它的值就已经转变成中文了,奇怪
在有的机器上显示名字和另存为时正确的,开发机器上显示名字不正确,打开的名字都是编码后的名字,怀疑是不是和头文件设置有关系,IE设置有关系?

机器配置:2000advance server +sp4
ie6.0.28+sp1+framework1.1
yuewenbin 2004-10-14
  • 打赏
  • 举报
回复
Try

把Response.ContentEncoding=System.Text.Encoding.GetEncoding("gb2312")去掉
HttpUtility.UrlEncode(Path.GetFileName(destFileName),System.Text.Encoding.GetEncoding("gb2312") ));
改为
HttpUtility.UrlEncode(Path.GetFileName(destFileName), System.Text.Encoding.UTF8);


surf88 2004-10-14
  • 打赏
  • 举报
回复
Response.ContentType = "Text/Txt"
ttyp 2004-10-14
  • 打赏
  • 举报
回复
to roapzone:定什么@?
to lql9935:设置了,见帖子
to brightheroes:现在发现生在E文国家的好处啊!up
brightheroes 2004-10-14
  • 打赏
  • 举报
回复
有一个根治的办法
用英文
lql9935 2004-10-14
  • 打赏
  • 举报
回复
web.config里面设置了吗?
roapzone 2004-10-14
  • 打赏
  • 举报
回复
定@

62,025

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧