„Krzaczki” zamiast polskich liter — skąd się biorą i jak je naprawić
Ä… zamiast ą, Ĺ‚ zamiast ł, ó zamiast ó. Wyjaśniamy, czym jest kodowanie znaków, dlaczego Excel psuje polskie litery w plikach CSV i jak to naprawić w tekście, arkuszu, na stronie i w bazie danych.
Komputer zapisuje tekst jako liczby (bajty). Kodowanie znaków to umowa, która mówi, jaka liczba oznacza jaką literę. Gdy plik zapisany w jednym kodowaniu zostanie odczytany w innym, polskie litery zamieniają się w „krzaczki”.
Najpopularniejsze kodowania
- UTF-8 — dzisiejszy standard internetu; obsługuje wszystkie alfabety świata. Polska litera zajmuje 2 bajty.
- Windows-1250 — starsze kodowanie Windows dla Europy Środkowej; 1 bajt na znak.
- ISO-8859-2 — starsze kodowanie dla Europy Środkowej, używane dawniej w Linuksie i w e-mailach.
Jak rozpoznać, co się stało
| Widzisz | Przyczyna | Da się naprawić? |
|---|---|---|
| Ä…, Ä™, Ĺ‚, Ăł | UTF-8 odczytany jako Windows-1250 | tak |
| ą, ę, ł, ó | UTF-8 odczytany jako Windows-1252 (zachodnie) | tak |
| ¹, ê, ³, œ, ¿ | Windows-1250 odczytany jako Windows-1252 | tak, przez ponowne otwarcie pliku |
| ?, � (romb ze znakiem zapytania) | informacja została utracona przy zapisie | nie — trzeba wrócić do oryginału |
Excel i pliki CSV
Excel otwierany dwuklikiem często zakłada starsze kodowanie i psuje polskie litery w plikach CSV zapisanych w UTF-8. Zamiast dwukliku użyj: Dane → Z tekstu/CSV i wybierz Pochodzenie pliku: 65001: Unicode (UTF-8). Przy eksporcie z własnej aplikacji pomaga dodanie na początku pliku znacznika BOM (bajty EF BB BF) — wtedy Excel sam rozpozna UTF-8.
Strony internetowe i bazy danych
- Zapisuj pliki źródłowe w UTF-8 (bez BOM w PHP).
- W HTML dodaj
<meta charset="utf-8">na początku sekcji head, a serwer powinien wysyłać nagłówekContent-Type: text/html; charset=utf-8. - W MySQL używaj kodowania
utf8mb4— zarówno dla tabel, jak i połączenia (np.$mysqli->set_charset('utf8mb4')). Zwykłeutf8w MySQL nie obsługuje m.in. emoji.
Najczęstszy błąd na stronach: dane zapisane w bazie poprawnie, ale połączenie ustawione na inne kodowanie — wtedy „krzaczki” pojawiają się dopiero przy wyświetlaniu, a czasem są zapisywane w bazie podwójnie zakodowane.
Naprawa tekstu, który już jest zepsuty
Jeśli masz tylko tekst z „krzaczkami” (np. skopiowany z e-maila lub raportu), można odwrócić błąd: zamienić znaki z powrotem na bajty błędnego kodowania i odczytać je jako UTF-8. Robi to automatycznie narzędzie naprawa polskich znaków — także wtedy, gdy różne linie zepsuto w różny sposób albo tekst zepsuto dwukrotnie.
Kody poszczególnych znaków w UTF-8 sprawdzisz w konwerterze ASCII i Unicode.
Narzędzia do tego poradnika
kodowanie znakówUTF-8Windows-1250polskie znakiCSVExcel