我在C#的asp.net mvc 2應用程序中使用UTF8編碼時遇到問題。我正在嘗試讓用戶從字符串中下載一個簡單的文本文件。我正在嘗試使用以下行獲取字節數組:
var x = Encoding.UTF8.GetBytes(csvString);
但是當我使用以下命令將其退回下載時:
return File(x, ..., ...);
我得到的文件沒有BOM,所以我無法正確顯示克羅地亞語字符。這是因為我的字節數組在編碼后不包含BOM。我嘗試手動插入這些字節,然后正確顯示出來,但這不是最好的方法。
我還嘗試創建UTF8Encoding類實例,並將布爾值(true)傳遞給其構造函數以包含BOM,但是它也不起作用。
嘗試這樣:
public ActionResult Download()
{
var data = Encoding.UTF8.GetBytes("some data");
var result = Encoding.UTF8.GetPreamble().Concat(data).ToArray();
return File(result, "application/csv", "foo.csv");
}
原因是采用布爾型參數的UTF8Encoding構造函數無法達到您的期望:
byte[] bytes = new UTF8Encoding(true).GetBytes("a");
結果數組將包含一個值為97的單個字節。沒有BOM,因為UTF8不需要BOM。
https://stackoverflow.com/questions/4414088/how-to-getbytes-in-c-sharp-with-utf8-encoding-with-bom
關注公眾號:UP技術控 獲取更多資訊
