Мое приложение - это. net WebAPI (C#, без MVC), который, помимо прочего, должен содержать некоторые файлы csv, содержимое которых также может включать нестандартные символы (например, греческие буквы).
Я попытался найти решение для SO, но большинство ответов было связано с использованием метода File базового класса mvc контроллера (к которому у меня нет доступа).
Показан мой текущий код ниже (я даже удалил часть File.ReadAllText, чтобы проверить, может ли он просто вернуть простой текст Hello World).
private HttpResponseMessage GetFile(string fileName)
{
var response = new HttpResponseMessage();
try
{
response.Content = new StringContent("Γειά σου Κόσμε");
response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") { FileName = fileName + ".csv" };
response.Content.Headers.ContentType = new MediaTypeHeaderValue("text/csv");
}
catch (Exception) { response.Content = new StringContent("File does not exist"); }
return response;
}
Я также пробовал использовать response.Content.Headers.ContentEncoding.Add(Encoding.UTF8.BodyName);
Некоторые странные взаимодействия:
Если я загружаю файл и открываю его с помощью Excel, он просто читает gibberi sh, если я открываю с помощью блокнота ++, текст читается нормально. В нем также указано, что кодировка - utf8, если я изменю ее на спецификацию utf-8 и сохраню файл, excel может его прочитать.
Если я просто переместу файл с сервера на свой компьютер, Excel имеет нет проблем с прочтением.