asp.net 下载文件的文件名乱码解决

asp.net 下载文件时,文件名在firefox、IE等浏览器中的处理方式不一样,容易出现乱码。

提供解决方案:

1、添加编码规则Response.HeaderEncoding Response.ContentEncoding 为 utf-8

Response.HeaderEncoding = System.Text.Encoding.UTF8;
Response.ContentEncoding = System.Text.Encoding.UTF8;

2、头部分 Content-Disposition 的设置。
要按照 rfc231 要求, 应该按照如下格式设置: "Content-Disposition","attachment;filename*=utf-8'zh_cn'文件名.xx"
关键是 filename的设置,*= 后面是 两个单引号,分成三部分(编码 语言 文件名) 如:*=utf-8'zh_cn'文件名.xx 或者 *=utf-8' '文件名.xx

Response.AddHeader("Content-Disposition", string.Format("attachment;filename*=utf-8''{0}", HttpUtility.UrlPathEncode(filename.NoHTML())));



你可能感兴趣的:(ASP.NET,.NET,MVC,asp.net,乱码,utf-8,浏览器,文件下载)