Asp.net mvc 3 带重音符号的ASP MVC3文件结果+;IE8被窃听了吗?

Asp.net mvc 3 带重音符号的ASP MVC3文件结果+;IE8被窃听了吗?,asp.net-mvc-3,internet-explorer-8,diacritics,fileresult,Asp.net Mvc 3,Internet Explorer 8,Diacritics,Fileresult,如果文件名包含重音符号,则它在Opera、FF、Chrome和IE9中可以正常工作 但在IE8中,文件类型是“未知文件类型”,并显示“文件”作为文件名(实际上是URL的最后一部分) 有人知道解决方法吗?除了替换文件名中的“特殊”字符之外 测试代码:(文件|新建项目|添加控制器) 像这样测试它: ,及 编辑=>我的“解决方案”,如果有人感兴趣: 公共类FileContentResultsTupide:FileContentResult//是的,也许我不是完全“政治正确”,但仍然。。。 { pub

如果文件名包含重音符号,则它在Opera、FF、Chrome和IE9中可以正常工作

但在IE8中,文件类型是“未知文件类型”,并显示“文件”作为文件名(实际上是URL的最后一部分)

有人知道解决方法吗?除了替换文件名中的“特殊”字符之外

测试代码:(文件|新建项目|添加控制器)

像这样测试它: ,及

编辑=>我的“解决方案”,如果有人感兴趣:
公共类FileContentResultsTupide:FileContentResult//是的,也许我不是完全“政治正确”,但仍然。。。
{
public FileContentResultStupidIE(byte[]fileContents,string contentType):基(fileContents,contentType){}
公共覆盖无效ExecuteSult(ControllerContext上下文)
{
var b=context.HttpContext.Request.Browser;

如果(b!=null&&b.Browser.Equals(“ie”,StringComparison.OrdinalIgnoreCase)和&b.MajorVersion这是用户在某个时候上载到系统的文件吗?如果是,请限制在文件名中使用重音符号。如果不是,请不要在文件名中使用重音符号:)。

尝试在控制器操作中添加以下行:

Response.HeaderEncoding = Encoding.GetEncoding("iso-8859-1");

您可以看看讨论这些问题的。不幸的是,没有一个通用的解决方案可以适用于所有浏览器。

不使用口音不是一个真正的选择。作为一名开发人员,我知道口音、空间等都有问题。但生活在一个每天都使用口音的国家,我不能说“没有口音!”…我知道这是一个相当简单的答案,但我喜欢接吻。否则我会在一个可能需要15分钟才能解决的问题上绞尽脑汁数小时。顺便说一句,文件列表来自外部系统,用户可以从该外部系统上载/修改文件。因此,我所能做的最多就是检查浏览器是否为IE 8或更糟,然后更换spe发送文件下载时使用字符。但这仍然可能导致其他问题,因为如果他们重新上载文件,文件名会更改…似乎不起作用,标题中的文件名仍然是UTF8编码的:内容配置:附件;文件名*=UTF-8''dsa%C3%A9ee。txt@Akos卢卡奇,博客p中提出的其他方法怎么样ost?检查浏览器并发送不同的标题实际上解决了问题,谢谢。
public class FileContentResultStupidIE : FileContentResult //yeah, maybe i am not totally "politically correct", but still...
{
    public FileContentResultStupidIE(byte[] fileContents, string contentType) : base(fileContents, contentType) { }

    public override void ExecuteResult(ControllerContext context)
    {
        var b = context.HttpContext.Request.Browser;
        if (b != null && b.Browser.Equals("ie", StringComparison.OrdinalIgnoreCase) && b.MajorVersion <= 8)
        {
            context.HttpContext.Response.AppendHeader("Content-Disposition", "attachment; filename=\"" + HttpUtility.UrlPathEncode(base.FileDownloadName) + "\"");
            WriteFile(context.HttpContext.Response);
        }
        else
        {
            base.ExecuteResult(context);
        }
    }
}
Response.HeaderEncoding = Encoding.GetEncoding("iso-8859-1");