当前位置:编程学习 > C#/ASP.NET >>

asp.net下载中文乱码问题

asp.net默认的是UTF-8编码的

以下设置下载中文无易做图常显示
Response.Clear();
Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(file.Name, System.Text.Encoding.GetEncoding("gb2312")));
Response.AddHeader("Content-Length", file.Length.ToString());
Response.ContentType = "application/octet-stream";
Response.Filter.Close();
Response.WriteFile(file.FullName);
Response.End();

以下设置下载中文可以正常显示
Response.Clear();
Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(file.Name, System.Text.Encoding.GetEncoding("Utf-8")));
Response.AddHeader("Content-Length", file.Length.ToString());
Response.ContentType = "application/octet-stream";
Response.Filter.Close();
Response.WriteFile(file.FullName);
Response.End();

不知道以gb2312编码中文不能正常显示Utf-8却可以 --------------------编程问答-------------------- 对头就是这个样子的 --------------------编程问答-------------------- utf-8通用的嘛。 --------------------编程问答--------------------
引用 2 楼 kid_wang 的回复:
utf-8通用的嘛。

顶 --------------------编程问答-------------------- 使用 UrlEnode 编码方式解决总是不彻底,即使在 IE 里显示正确了,在其他浏览器里也不正确,不相信你可以自己试试。
除了中文,还有空格、特殊符号等都不正确。

鄙人不才,前段时间专门研究了这种现象,结果老外的代码,写出了一个比较令人满意的 HttpHandler,得到的效果如下图所示






在这里下载代码:SpecifiedFileHandler
在这里查看文章:彻底解决文件下载乱码问题
在这里访问我的网站:http://www.ciznx.com

--------------------编程问答-------------------- 编码实在是个很麻烦的问题 --------------------编程问答-------------------- 是的就是那样。utf-8是通用的 --------------------编程问答-------------------- UTF-8有时候也是出问题。我也正在研究! --------------------编程问答--------------------  string strPa = Server.MapPath("../Template/a.doc");
                    Response.AppendHeader("Content-Disposition", "attachment;filename=" + System.Web.HttpUtility.UrlEncode("a.doc", System.Text.Encoding.GetEncoding("utf-8")) + "");
                    Response.ContentType = "application/octet-stream";
                    Response.WriteFile(strPa);
                    Response.End(); --------------------编程问答-------------------- utf-8可以解析更多的字符 --------------------编程问答-------------------- 一般utf-8多一些 --------------------编程问答-------------------- 告诉你一个方法绝对解决此问题

用记事本打开那个页面,然后另存为的时候,编码选择utf-8,提示覆盖即可。绝度解决 --------------------编程问答-------------------- Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(file.Name, System.Text.Encoding.GetEncoding("gb2312")));

对文件名进行gb2312编码 为什么输出中文名是乱码呢?


--------------------编程问答-------------------- UPPUP --------------------编程问答-------------------- Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(file.Name, System.Text.Encoding.GetEncoding("gb2312")));

对文件名进行gb2312编码 为什么输出中文名是乱码呢? --------------------编程问答--------------------
引用 14 楼 luckcch 的回复:
Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(file.Name, System.Text.Encoding.GetEncoding("gb2312")));

对文件名进行gb2312编码 为什么输出中文名是乱码呢?

你当前页面是utf-8编码,弹出的下载窗口文件名却是gb2312,那只能显示成乱码了. --------------------编程问答-------------------- 编码是个头痛的事,尤其是在台资企业,繁体字的时候,更头痛!!英文和中文还好一点 --------------------编程问答-------------------- up!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!111
补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,