Jak wygląda podwójnie zakodowany tekst
Przed
Zażółć gęślą jaźń – sklep otwarty od poniedziałku
Po
Zażółć gęślą jaźń – sklep otwarty od poniedziałku
Skąd się to bierze
W UTF-8 polskie ł to dwa bajty. Gdy program odczyta je jako Windows-1250, powstają dwa znaki: Ĺ‚. Jeśli ten wynik zostanie znów zapisany jako UTF-8, z jednego znaku robią się cztery bajty. Przy drugim takim obiegu każdy z tych znaków rozpada się ponownie – Ĺ‚ zamienia się w Ĺ‚.
Typowe przyczyny drugiej rundy:
- Baza danych jest migrowana, a zrzut SQL lub eksport z WordPressa był zepsuty już wcześniej.
- Plik CSV jest otwierany w Excelu, zapisywany, a potem po raz kolejny źle importowany.
- Skrypt lub API konwertuje tekst, który już jest w UTF-8.
Najczęstsze wzorce w skrócie
Podwójnie zakodowane
ą ć ę ł ó ś ż €
Poprawnie
ą ć ę ł ó ś ż €
Przy potrójnym kodowaniu ciąg jest jeszcze dłuższy: ł zamienia się w Ĺ‚. Ten poziom Mojibuster także naprawia automatycznie.
Dlaczego „znajdź i zamień” nie wystarcza
Przy „znajdź i zamień” trzeba znać każdy wzorzec – osobno dla każdego poziomu i każdej polskiej litery. Łatwo coś pominąć albo przypadkiem zmienić poprawny tekst. Mojibuster liczy natomiast pierwotne bajty i sprawdza, czy wynik jest prawidłowym UTF-8. Dopiero wtedy podmienia dane miejsce.
- Wklej tekst powyżej albo upuść plik w polu.
- Mojibuster rozpoznaje, ile razy tekst został zakodowany, i naprawia do trzech poziomów.
- Na liście zmian zobaczysz każde poprawione miejsce. Potem skopiuj wynik albo pobierz plik.
Tekst, który jest już poprawny, pozostaje bez zmian – nawet jeśli w jednym pliku mieszają się linie zepsute i dobre. Błędy jednopoziomowe, takie jak Ĺ‚, opisuje strona Windows-1250 na UTF-8.
Najczęstsze pytania
Jak rozpoznać podwójne kodowanie?
Po dłuższych ciągach z Ă„, †lub Äą. Błędy jednopoziomowe są krótsze, np. Ĺ‚ zamiast ł – więcej na stronie co to jest mojibake.
Ile poziomów potrafi naprawić Mojibuster?
Do trzech. Więcej zdarza się w praktyce bardzo rzadko.
Co, jeśli tylko część tekstu jest zakodowana podwójnie?
To nie problem. Mojibuster naprawia każde miejsce osobno, a poprawne fragmenty zostawia w spokoju.
Czy mogę sprawdzić wynik przed pobraniem?
Tak. Mojibuster wypisuje każde naprawione miejsce z numerem linii, zanim skopiujesz tekst lub pobierzesz plik.