Przejdź do treści

„Krzaczki” zamiast polskich liter — skąd się biorą i jak je naprawić

Redakcja AMKBIT · · 2 min czytania

Ä… 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

WidziszPrzyczynaDa się naprawić?
Ä…, Ä™, Ĺ‚, ĂłUTF-8 odczytany jako Windows-1250tak
ą, ę, ł, óUTF-8 odczytany jako Windows-1252 (zachodnie)tak
¹, ê, ³, œ, ¿Windows-1250 odczytany jako Windows-1252tak, przez ponowne otwarcie pliku
?, � (romb ze znakiem zapytania)informacja została utracona przy zapisienie — 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łówek Content-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łe utf8 w 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

Przeczytaj też