Ako vyzerá dvojito zakódovaný text
Pred
Kŕdeľ šťastných ďatľov žije v kôre – otvorené od pondelka
Po
Kŕdeľ šťastných ďatľov žije v kôre – otvorené od pondelka
Ako k tomu dochádza
V UTF-8 sú slovenské ľ a č tvorené dvoma bajtmi. Keď ich program prečíta ako Windows-1250, vzniknú dva znaky: Äľ. Ak sa tento výsledok znova uloží ako UTF-8, z jedného znaku sú štyri bajty. Pri druhom takomto kole sa každý z týchto znakov rozpadne znova – Äľ sa zmení na Äľ.
Typické spúšťače druhého kola:
- Databáza sa migruje a export z WordPressu alebo SQL dump bol poškodený už predtým.
- Súbor CSV sa otvorí v Exceli, uloží a neskôr sa znova nesprávne naimportuje.
- Skript alebo API prevádza text, ktorý už je v UTF-8.
Najčastejšie vzory na prvý pohľad
Dvojito zakódované
ľ č š ž ä ô ť €
Správne
ľ č š ž ä ô ť €
Pri trojitom kódovaní je reťazec ešte dlhší: ľ sa zmení na Äľ. Mojibuster opraví aj túto úroveň automaticky.
Prečo nestačí nájsť a nahradiť
Pri funkcii nájsť a nahradiť by ste museli poznať každý vzor – zvlášť pre každú úroveň a každé slovenské písmeno. Ľahko niečo prehliadnete alebo omylom zmeníte správny text. Mojibuster naopak vypočíta pôvodné bajty a overí, či je výsledok platné UTF-8. Až potom miesto nahradí.
- Vložte text vyššie alebo presuňte súbor do poľa.
- Mojibuster pozná, koľkokrát bol text prevedený, a opraví až tri úrovne.
- V zozname zmien uvidíte každé miesto. Potom výsledok skopírujte alebo stiahnite súbor.
Text, ktorý je už správny, zostane bez zmeny – aj keď sa v jednom súbore miešajú poškodené a správne riadky. Jednoúrovňové chyby ako Äľ popisuje stránka prevod Windows-1250 na UTF-8.
Časté otázky
Ako spoznám dvojité kódovanie?
Podľa dlhších reťazcov s Ă„, †alebo Äą. Jednoúrovňové chyby sú kratšie, napríklad Äľ namiesto ľ – viac na stránke čo je mojibake.
Koľko úrovní dokáže Mojibuster opraviť?
Až tri. Viac sa v praxi stáva len výnimočne.
Čo ak je dvojito zakódovaná len časť textu?
To nevadí. Mojibuster opraví každé miesto zvlášť a správne časti nechá bez zmeny.
Môžem si výsledok pred stiahnutím skontrolovať?
Áno. Mojibuster vypíše každé opravené miesto s číslom riadka skôr, než text skopírujete alebo súbor stiahnete.