我有一個用UTF32編碼的CSV。當我在IE中打開流並使用Excel打開時,我可以讀取所有內容。在iPad上流,我得到一個沒有任何內容的空白頁面。 (我不知道如何在iPad上查看源代碼,以便在HTML中隱藏某些內容)。如何編碼Unicode以便iPad和Excel都能理解?
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;
}
UPDATE2 Excel is barfing on UTF8>:{。人。我只是取消了他列出的第二個選項,因爲它不適用於iPad。我無法贏得這場比賽。
UPDATE3
根據您的建議我已經看了十六進制代碼。沒有BOM,但文件佈局有所不同。
UTF8
4D 61 74 65(MATE從第一字MATERIAL)
UTF32
4D 00 00 00(M從第一字MATERIAL)
所以看起來UTF32規定事以32比特輸出,UTF8以8比特輸出。我認爲這就是Excel可以猜測的原因。現在我會嘗試你的建議修復。
@ P.Brian我認爲,iPad上使用一個類似於谷歌Chrome和Safari瀏覽器。嘗試在PC上測試它們以查看結果。 http://www.apple.com/safari/ – Aristos
@Aristos - 剛剛運行在Safari 5.0.5的桌面在Windows XP上,它工作正常。我沒有Mac,只有iPad。 –
DataGridToCSV的輸出是什麼?字符串?流?字節[]?如果內容的編碼本身不對應,那麼設置Response.ContentEncoding是不夠的 –