See the question and my original answer on StackOverflow

I suggest you use UTF8 encoding like this:

    using (StreamWriter writer = new StreamWriter("asd.csv", false, Encoding.UTF8))
    {
        writer.WriteLine("Id;City");
        writer.WriteLine("1;Montréal");
        writer.WriteLine("2;Québec");
    }

This will add a BOM (Byte Order Mark) to the beginning of the CSV and you can then open the file with Excel directly, or even with the standard Windows Notepad successfully.