如何编码文件名以供下载?

eKe*_*ek0 18 c# asp.net-mvc encoding http

当文件名是"Algunas MARCAS quenosacompañan" System.FormatException时,当我尝试下载该文件时,ASP.NET MVC会引发.但如果文件名是"Asistente de Gerencia Comercial"则不然.

我想这是因为与UTF-8编码有关的东西,但我不知道如何编码该字符串.

如果我是对的,我怎么能在UTF-8编码中编码字符串?如果我不对,我的问题是什么?

ZZ *_*der 27

我编码这样的文件名下载,

HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename= " + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8));
Run Code Online (Sandbox Code Playgroud)

  • 这会用+替换空格,这可能不是你想要的. (5认同)
  • HttpUtility.UrlEncode 导致用加号替换空格,HttpUtility.UrlPathEncode 是加号问题的解决方案。 (4认同)
  • **注意**:对于现代的正确解决方案,请参阅RFC6266:http://tools.ietf.org/html/rfc6266 (2认同)

eKe*_*ek0 5

根据ZZ Coder的回答,因为我正在使用FileResult,所以我决定将文件名编码为:

HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8)
Run Code Online (Sandbox Code Playgroud)