środa, 4 czerwca 2014

Polskie znaki w pliku CSV, epizod drugi

W poprzednim wpisie opisałem jak wymusić na Exelu kodowanie UTF8. Okazuje się, że dodanie preambuły poprawia wyświetlanie znaków, ale ma też wpływ na okno dialogowe "Zapisz Jako".



Jak widać na załączonym obrazku, nie wypełnia się domyślna nazwa pliku, oraz "Zapisz jako typ" ustawia się na *.txt zamiast *.csv.
Z pomocą przychodzi kodowanie Windows-1250.


var encoding = Encoding.GetEncoding("windows-1250");
byte[] bytes = encoding.GetBytes(csv.Replace("\r\n", "\n"));
bytes = encoding.GetPreamble().Concat(bytes).ToArray();


Dzięki temu Excel nadal wyświetla poprawne znaki, ale dodatkowo nie tracimy poprawnych wartości w "Zapisz jako".