Przejdź do treści

Kodowanie plików: CSV, napisy do filmów i polskie znaki — UTF-8 czy Windows-1250?

Redakcja AMKBIT · · 2 min czytania

Dlaczego plik CSV z banku otwiera się z „krzaczkami”, napisy do filmu wyświetlają się źle na telewizorze, a stary program nie przyjmuje pliku z nowego. Praktyczny przewodnik po zmianie kodowania z przykładami.

Plik tekstowy to ciąg bajtów. Kodowanie mówi programowi, który bajt oznacza którą literę. Polskie litery są w różnych kodowaniach zapisane różnymi bajtami — dlatego plik otwarty w „złym” kodowaniu pokazuje „krzaczki”. Ogólne wyjaśnienie znajdziesz w poradniku „krzaczki” zamiast polskich liter; tu skupiamy się na plikach.

Trzy najczęstsze kodowania w Polsce

KodowanieGdzie spotkasz„ą” zapisane jako
UTF-8strony internetowe, nowe programy, Linux, macOS, telefonydwa bajty: C4 85
Windows-1250starsze programy dla Windows, eksporty z systemów księgowych i bankowych, stare napisyjeden bajt: B9
ISO-8859-2stare strony, poczta, systemy uniksowejeden bajt: B1

Plik CSV w Excelu

Excel otwierany dwuklikiem często zakłada kodowanie systemowe. Plik w UTF-8 bez znacznika BOM pokaże wtedy „Ä…” zamiast „ą”. Rozwiązania:

  • zapisz plik jako UTF-8 z BOM — Excel rozpozna go automatycznie,
  • albo importuj przez „Dane → Z tekstu/CSV” i wybierz kodowanie 65001 (UTF-8).

Odwrotna sytuacja: plik z banku w Windows-1250 otwarty w programie oczekującym UTF-8 pokaże romby „�”. Zamiana na UTF-8 rozwiązuje problem. Obie operacje zrobisz w narzędziu do zmiany kodowania pliku, a zawartość CSV szybko podejrzysz w podglądzie CSV.

Napisy do filmów (SRT)

Starsze polskie napisy są zwykle w Windows-1250. Telewizory, odtwarzacze i aplikacje mobilne częściej oczekują UTF-8 — wtedy zamiast polskich liter pojawiają się dziwne znaki albo litery znikają. Zamień plik na UTF-8 (z BOM lub bez — zależnie od odtwarzacza; jeśli jedno nie działa, spróbuj drugiego).

Starsze programy i urządzenia

Niektóre programy księgowe, kasy fiskalne, systemy magazynowe czy urządzenia przemysłowe przyjmują pliki tylko w Windows-1250. Wtedy trzeba zamienić UTF-8 na Windows-1250 — pamiętając, że znaki spoza polskiego alfabetu (emoji, cudzysłowy drukarskie, niektóre symbole) nie mają odpowiednika i zostaną zastąpione znakiem „?”.

Końce linii

Windows kończy linie dwoma znakami (CR LF), Linux i macOS — jednym (LF). Większość programów radzi sobie z obydwoma, ale niektóre starsze narzędzia Windows pokażą plik z LF jako jedną długą linię, a skrypty uniksowe mogą „potknąć się” o CR. Przy zmianie kodowania możesz od razu ujednolicić końce linii.

Gdy masz tylko zepsuty tekst

Jeśli plik został już raz źle przekonwertowany i zapisany (w środku są „Ä…”, a nie bajty Windows-1250), zmiana kodowania nie pomoże — trzeba odwrócić błąd. Zrobi to naprawa polskich znaków. Gdy dane mają trafić do aplikacji lub API, zamień CSV na JSON w konwerterze CSV ↔ JSON (JSON zawsze używa UTF-8).

Narzędzia do tego poradnika

kodowanieUTF-8Windows-1250CSVnapisy SRTpolskie znaki

Przeczytaj też