如何使用帶有BOM的UTF8編碼的C#中的GetBytes()?


 

我在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技術控   獲取更多資訊


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM