FileContentResult和文件名中的国际字符

时间:2016-03-09 14:09:37

标签: asp.net-mvc asp.net-mvc-2 internationalization

我正在使用此代码将文件返回给客户端

return new FileContentResult(Encoding.UTF8.GetBytes(sb.ToString()), MimeType)
            {
                FileDownloadName = String.Format("{0}.csv", fileName)
            };

当文件名为ascii格式时,它会起作用,但当文件名包含国际字符时,它将返回Action的名称

例如,如果filename为Report 新しいレポート,则下载的文件是没有任何扩展名的Action名称。

更新

这将在Chrome中发生,即在Firefox中下载文件但会更改某些字符

Firefox:Report2%0d%0a ��しいレポート_2016-03-09_09-20-35.c%0d%0a sv

1 个答案:

答案 0 :(得分:1)

对于遇到同样问题的人:

var browser = System.Web.HttpContext.Current.Request.Browser.Browser;
if (browser == "Chrome" || browser == "IE" || browser == "InternetExplorer")
{
     fileName = HttpUtility.UrlEncode(fileName, Encoding.UTF8);
}

return new FileContentResult(Encoding.UTF8.GetBytes(sb.ToString()), MimeType)
{
      FileDownloadName = String.Format("{0}.csv", fileName)
};
相关问题