服务器应返回文件以供下载。英文名称一切正常,俄语我无法分配正常名称。
例子:
byte[] fromb64 = Convert.FromBase64String(file);
string fname = Encoding.UTF8.GetString(fromb64);
Console.WriteLine("Decoded base64 = " + fname);// тут все нормально
response.AddHeader("Content-disposition", "attachment; filename=" + Path.GetFileName(fname));// а тут нет. получается бурда из символов
response.ContentLength64 = file_Stream.Length;
response.SendChunked = false;
response.ContentType = System.Net.Mime.MediaTypeNames.Application.Octet;
试图直截了当
response.AddHeader("Content-disposition", "attachment; filename=\"файл.jpg\"");
我收到 D09;.jpg
有解决办法吗?
HTTP 标头仅支持 ASCII 编码。
根据RFC-2183,这样的标头,包括非 ASCII 字符,必须根据RFC-2184进行编码。
RFC-2184 本身已被弃用并被RFC-2231取代。
例如,如果文件名是“image.jpg”并且您使用 UTF-8 编码,那么它看起来像这样
输出将是
在
UTF-8两个撇号之后,不是引号。这是另一个有用的链接。