środa, 30 kwietnia 2014

Polskie znaki w pliku CSV

Często musimy wygenerować pliki CSV po stronie ASP.NET. Niestety użycie kodowania UTF8 nie gwarantuje poprawnego wyświetlania polskich znaków w Excelu.

Wygląda na to, że Excel domyślnie nie stosuje kodowania UTF8. Aby "zmusić" go do tego, należy dodać BOM na początku strumienia.

string csv = GenerateCsv();
var encoding = Encoding.UTF8;
byte[] bytes = encoding.GetBytes(csv);
bytes = Encoding.UTF8.GetPreamble().Concat(bytes).ToArray();
// ... return application/octet-stream with filename=something.csv 

 Teraz otwierając ściągnięty plik w Excelu, widzimy polskie znaki.




Żródło:http://stackoverflow.com/questions/4414088/how-to-getbytes-in-c-sharp-with-utf8-encoding-with-bom