Kodowanie plików: CSV, napisy do filmów i polskie znaki — UTF-8 czy Windows-1250?
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
| Kodowanie | Gdzie spotkasz | „ą” zapisane jako |
|---|---|---|
| UTF-8 | strony internetowe, nowe programy, Linux, macOS, telefony | dwa bajty: C4 85 |
| Windows-1250 | starsze programy dla Windows, eksporty z systemów księgowych i bankowych, stare napisy | jeden bajt: B9 |
| ISO-8859-2 | stare strony, poczta, systemy uniksowe | jeden 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