在Excel中不能正确保存字符

我有下面的C#代码,将Umlaute字符写入一个CSV文件。 打开文件时,这些字符完全失真。 这里是代码:

string csvFile = string.Empty; using (System.IO.StreamWriter file = new System.IO.StreamWriter(fileName)) { //DataTable columns are already formatted WRT commas and double quotes for (int i = 0; i < dt.Rows.Count; i++) csvFile += String.Join(",", dt.Rows[i].ItemArray) + "\r\n"; file.WriteLine(csvFile); } 

我检查了string'csvFile',它确实保存这些字符。 这是Excel问题或在我的代码?

您没有将正确的BOM字符添加到您的输出文件,所以Excel不知道它应该使用的编码。 为了避免这种情况,请尝试像下面这样将编码添加到您的Streamwriter:

 System.IO.StreamWriter file = new System.IO.StreamWriter(fileName, new UTF8Encoding(true)) 

编辑:正如stuartd评论这可能无法在每个Excel版本正常工作