ś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".

4 komentarze:

  1. Super art. Bardzo ciekawy i merytoryczny. Pomógł mi rozwiązać skomplikowany problem polskich znaków w plikach CSV nad którym de facto spędziłem wiele godzin. Polecam wszystkim! Czekam na kolejne wpisy!

    OdpowiedzUsuń
    Odpowiedzi
    1. Ja też Karolu. Bardzo przydatne. Co z duńskimi znakami?

      Usuń
  2. Ten komentarz został usunięty przez autora.

    OdpowiedzUsuń
  3. Kolejny dzień bez nowych postów, czy warto jeszcze mieć nadzieję?

    OdpowiedzUsuń