THe solution actually is not to use the FIle() method since it does not support international characters in the file name;
Instead use the old-school Response to render the file back to the Browser:
Check out my solution below:
public ActionResult GetFile(byte[] value, string fileName)
{
string fileExtension = Path.GetExtension(fileName);
string contentType = GetContentType(fileExtension);
Response.Clear();
if (Request.Browser.Browser == "IE")//IE needs special handling in order to display the international
//characters in the file name
{
string attachment = String.Format("attachment; filename={0}", Server.UrlPathEncode(fileName));
Response.AddHeader("Content-Disposition", attachment);
}
else
Response.AddHeader("Content-Disposition", "attachment; filename="+fileName);
Response.ContentType = contentType;
Response.Charset = "utf-8";
Response.HeaderEncoding = UnicodeEncoding.UTF8;
Response.ContentEncoding = UnicodeEncoding.UTF8;
Response.BinaryWrite(value);
Response.End();
return null;
}