用Excel打开c#的正确CSV编码是什么?

用Excel打开c#的正确CSV编码是什么?,c#,excel,csv,encoding,streamwriter,C#,Excel,Csv,Encoding,Streamwriter,我使用基于StreamWriter的C#CSVWriter编写CSV。 在我的数据中,我有很多特殊的字符,比如“Bávaro” 因此,当我使用UTF-8或ASCII编码我的CSV时,我无法得到“á”,但我可以在Excel中完美地打开它。 当我使用Unicode时,我的CSV具有正确的字符,但事实上,当我在Excel中打开此CSV时,它不会像我的其他CSV那样自动排序,所有值都作为字符串出现在第一列中 这里的正确编码是什么?我建议您使用以下方法: Encoding.GetEncoding(1252

我使用基于StreamWriter的C#CSVWriter编写CSV。 在我的数据中,我有很多特殊的字符,比如“Bávaro”

因此,当我使用UTF-8或ASCII编码我的CSV时,我无法得到“á”,但我可以在Excel中完美地打开它。 当我使用Unicode时,我的CSV具有正确的字符,但事实上,当我在Excel中打开此CSV时,它不会像我的其他CSV那样自动排序,所有值都作为字符串出现在第一列中

这里的正确编码是什么?

我建议您使用以下方法:

Encoding.GetEncoding(1252)

它支持“á”等字符,在Excel 2003到Excel 2013之间运行良好。

使用此编码导出您的CSV
编码。GetEncoding(“Windows-1252”)

如果CSV文件开头包含BOM,Excel只能使用正确的编码打开UTF-8编码的CSV。Unicode(UTF-16)编码的CSV只有在以制表符分隔而不是逗号(或分号)分隔时才能正确打开。请尝试向文件中添加前导字节,如我在此处所述: