我有这个从服务器下载文件的C#代码:
public static void DownloadBinaryFile(byte[] _ByteArray, string fullfileName)
{
fullfileName = "רועי.pdf"; //"Royi.pdf" in hebrew
System.Web.HttpContext.Current.Response.AddHeader("content-disposition", "attachment;filename=" + fullfileName);
System.Web.HttpContext.Current.Response.BinaryWrite(_ByteArray);
System.Web.HttpContext.Current.Response.ContentType = "application/octet-stream";
System.Web.HttpContext.Current.Response.Flush();
System.Web.HttpContext.Current.Response.End();
}
请注意,filename具有固定值(用于测试)。
当我点击按钮时:
我在FIDDLER中看到正确的名字:
Chrome 显示正确的文件名保存:
但是,Internet Explorer显示出胡言乱语:
其他信息:
IE 11,Windows 7 64位,Edge:
网页编码:
问题:
为什么文件名显示为乱码,我该如何解决?
答案 0 :(得分:1)
因为您无法在Content-Disposition中使用非ASCII字符而无需额外转义。请参阅http://greenbytes.de/tech/webdav/rfc6266.html#disposition.parameter.filename。