этот сводит меня с ума.И на прошлой неделе я думал, что взломал орех, но, к сожалению, нет ....
, поэтому я хочу создать загрузку CSV для других пользователей, чтобы они открывались в MS-Word (они хотят формат CSV)
, поэтому я получаю следующий код в контроллере MVC2:
Response.AddHeader("Content-Disposition", "attachment; filename=PersonalMessages.csv");
Response.ContentType = "application/csv";
string s = new DownloadService().GetAddresses();
Response.Write(s);
Response.End();
return null;
строка 's' содержит (среди прочего) следующие символы: é å æ É à
Когда я открываю его в блокноте: OK
, когда я открываю его в Notepad ++: Ok
, когда я открываю его в Excel: не в порядке, он показывает это: à © à ¥ æ Ã101 Ã
(когда я открываю его в Notepadd ++, он говорит, что он находится в кодировке UTF8 без BOM, что бы я ни пытался использовать с кодировками UTF8 с логическими значениями в конструкторе, чтобы получить BOM, это не сработало;)
Итак, на прошлой неделе я задал вопрос, и ответ состоял в том, чтобы функция GetAddresses () возвращала байтовый массив.
Итак, я преобразовал свой текст, используя это:
// C# to convert a string to a byte array.
public static byte[] StrToByteArray(string str)
{
System.Text.UnicodeEncoding encoding = new System.Text.UnicodeEncoding();
return encoding.GetBytes(str);
}
, и написал байтовый массив в ответе и все было хорошо!Блокнот, блокнот ++ и Excel!Отлично, живи хорошо.
Но потом я узнал, что мы открываем файл в Word.Ну, нет проблем, я думал.
Но тогда они помогают: Word не может открыть файл (прямо), сначала запрашивает кодировку , и это проблема, потому что они используютэто в автоматизированном процессе.
Когда они открывают файл в Блокноте и сохраняют его как Unicode, все идет хорошо.
Я также попробовал это в методе действия:
Response.ContentEncoding = Encoding.Unicode ;
Response.HeaderEncoding = Encoding.UTF8;
но это не помогло.
У кого-нибудь есть подсказки?