文件名中的 FileContentResult 和国际字符

FileContentResult and international characters in the file name

我正在使用此代码return将文件发送给客户端

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

当文件名是 ascii 格式时,它工作文件,但当文件名包含国际字符时,它将 return 动作的名称

例如,如果文件名是 Report 新しいレポート,则下载的文件是不带任何扩展名的操作名称。

更新

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

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

谁有同样的问题:

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)
};