首页 > 解决方案 > Asp.Net MVC 5 FileResult 总是使用 ANSI 编码下载文件

问题描述

我有这部分代码

Response.Charset = _encodingcode;
Response.AddHeader("Content-Encoding", _encodingcode);
Response.HeaderEncoding = Encoding.GetEncoding(_encodingcode);
Response.ContentEncoding = Encoding.GetEncoding(_encodingcode);
Response.ContentType = mimeType;                     

return File(_filedata, mimeType, $"{id}{_extension}");

但总是在下载文件时记事本的编码是 ANSI

标签: c#encodingasp.net-mvc-5fileresult

解决方案


默认情况下,如果您在编码中提供不正确的文本,则每个编码都是 ANSI,它会作为 ANSI。改变用途的正确方法

Context.Response.Charset = Encoding.UTF8.WebName;

如果你想要 utf8 这样做

 Encoding encoding = Encoding.UTF8;
     StreamWriter writer = new StreamWriter("Encoding.html", false, encoding);

     writer.WriteLine("<html><head>");

     // Write charset attribute to the html file.
     // The value of charset is returned by the WebName property.
     writer.WriteLine("<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=" +
                           encoding.WebName +"\">");

         writer.WriteLine("</head><body>");
     writer.WriteLine("<p>" + HttpUtility.HtmlEncode(encoding.EncodingName) + "</p>");
     writer.WriteLine("</body></html>");
     writer.Flush();
     writer.Close();

推荐阅读