У меня есть CSV, который закодирован с UTF32.Когда я открываю поток в IE и открываю в Excel, я могу читать все.На iPad я транслирую и получаю пустую страницу без какого-либо контента.(Я не знаю, как просматривать исходники на iPad, чтобы в HTML могло быть что-то скрытое).
Ответ http написан на asp.net C #
Response.Clear();
Response.Buffer = true;
Response.ContentType = "text/comma-separated-values";
Response.AddHeader("Content-Disposition", "attachment;filename=\"InventoryCount.csv\"");
Response.RedirectLocation = "InventoryCount.csv";
Response.ContentEncoding = Encoding.UTF32;//works on Excel wrong in iPad
//Response.ContentEncoding = Encoding.UTF8;//works on iPad wrong in Excel
Response.Charset = "UTF-8";//tried also adding Charset just to see if it works somehow, but it does not.
EnableViewState = false;
NMDUtilities.Export oUtilities = new NMDUtilities.Export();
Response.Write(oUtilities.DataGridToCSV(gvExport, ","));
Response.End();
Единственное, что я могу сделать, это то, что iPad не может читать UTF32, это правда?Как я могу просмотреть источник на iPad?
UPDATE Я только что сделал интересное открытие.Когда я использую кодировку UTF8, на iPad все работает, и символы отображаются правильно, но в Excel все перепутано.Но когда я использую UTF32, обратное верно.iPad ничего не отображает, но Excel работает отлично.Я действительно понятия не имею, что я могу с этим поделать.
Выходы iPad UTF8 = "Quattrode®"Выходы Excel UTF8 = "Quattrode®"
Выходы iPad UTF32 = ""Выходные данные Excel UTF32 = "Quattrode®"
Вот моя реализация DataGridToCsv
public string DataGridToCsv(GridView input, string delimiter)
{
StringBuilder sb = new StringBuilder();
//iterate Gridview and put row results in stringbuilder...
string result = HttpUtility.HtmlDecode(sb.ToString());
return result;
}
ОБНОВЛЕНИЕ2 Excel работает с UTF8 >: {.Мужчина.Я просто отменил второй вариант, который он перечисляет, потому что он не работает на iPad.Я не могу выиграть, потому что проиграл.
UPDATE3 По вашим предложениям я посмотрел на шестнадцатеричный код.Спецификации нет, но есть различие между форматами файлов.
UTF8 4D 61 74 65 (MATE от первого слова МАТЕРИАЛ)UTF32 4D 00 00 00 (M от первого слова МАТЕРИАЛ)
Так что, похоже, UTF32 выкладывает вещи в 32 бита, а UTF8 делает это в 8 битах.Я думаю, именно поэтому Excel может догадаться.Сейчас я попробую предложенные вами исправления.