簡體   English   中英

CSV編碼問題(Microsoft Excel)

[英]CSV encoding issues (Microsoft Excel)

我使用C#動態創建CSV文件,我遇到了一些奇怪的編碼問題。 我目前使用ASCII編碼,它在Excel 2010中運行良好,我在家里和工作機器上使用它。 但是,客戶使用Excel 2007,對他們來說有一些奇怪的格式問題,即'£'符號(英鎊符號)前面帶有重音'A'字符。

我應該使用什么編碼? 令人煩惱的是,我無法測試這些修復,因為我無法訪問Excel 2007!

我在Excel 2003上使用Windows ANSI代碼頁1252沒有任何問題。由於您遇到的相同問題,我明確地改為此。

private const int WIN_1252_CP = 1252; // Windows ANSI codepage 1252

this._writer = new StreamWriter(fileName, false, Encoding.GetEncoding(WIN_1252_CP));

我在編寫用於Excel的CSV文件時成功使用了UTF8編碼。

我遇到的唯一問題是確保使用StreamWriter構造函數的重載,該構造函數將編碼作為參數。 StreamWriter的默認編碼表示它是UTF8,但它確實是UTF8-Without-A-Byte-Order-Mark而沒有BOM Excel將使用多個字節搞亂字符。

您需要將Preamble添加到文件:

        var data = Encoding.UTF8.GetBytes(csv);
        var result = Encoding.UTF8.GetPreamble().Concat(data).ToArray();
        return File(new MemoryStream(result), "application/octet-stream", "file.csv");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM