Odkiaľ sa vzalo slovo mojibake?
Mojibake (文字化け) je japonské slovo: „moji“ znamená „znak“ a „bake“ „premena“. V 90. rokoch používali japonské počítače vedľa seba niekoľko kódovaní – Shift_JIS, EUC-JP a ISO-2022-JP – a pokazené e-maily a stránky boli bežnou vecou. Slovo prešlo do angličtiny a stalo sa medzinárodným pojmom. Po slovensky sa tomu istému javu hovorí „rozsypaný čaj“ alebo jednoducho „zlé kódovanie“.
Ako rozsypaný čaj vzniká
Počítač ukladá text ako bajty. Kódovanie určuje, ktorý bajt znamená ktoré písmeno. V UTF-8 zaberá š dva bajty: C5 A1. Program, ktorý ich číta ako Windows-1250, zobrazí pre každý bajt samostatný znak: Ĺ pre C5 a ˇ pre A1.
Pritom sa nič nestratí – bajty sú stále na mieste, len boli prečítané zle. Preto sa rozsypaný čaj obvykle dá vrátiť späť: Mojibuster prevedie chybné znaky znova na bajty a prečíta ich v správnom kódovaní.
Rozsypaný čaj
Kŕdeľ ďatľov učà mláďatá žrať kôru – stretnutie v stredu v Žiline
Po oprave
Kŕdeľ ďatľov učí mláďatá žrať kôru – stretnutie v stredu v Žiline
Dva druhy slovenského rozsypaného čaju
Äľ,š,Ĺľnamiestoľ,š,ž– UTF-8 prečítané ako Windows-1250. Typické pre súbory CSV otvorené v Exceli: rozsypaný čaj v Exceli.¾,è,ònamiestoľ,č,ň– starý súbor vo Windows-1250 alebo ISO-8859-2 otvorený so západným nastavením: prevod Windows-1250 na UTF-8.- Pri titulkoch k filmom sa objavujú obe varianty: rozsypaný čaj v titulkoch.
Mojibake v iných jazykoch
- Japončina:
縺薙s縺ォ縺。縺ッnamiestoこんにちは– UTF-8 prečítané ako Shift_JIS. Viac na japonskej stránke. - Ruština:
ПриветnamiestoПривет– UTF-8 prečítané ako Windows-1251. Rusi tomu hovoria „krakozjabry“. - Západné jazyky:
é,ñalebo€namiestoé,ñalebo€– najčastejšia podoba na svete.
Typické príčiny
- Excel otvorí súbor CSV v UTF-8 bez BOM v kódovaní Windows-1250.
- Pripojenie k databáze používa
latin1alebolatin2, ale dáta sú v UTF-8. - Web alebo e-mail uvádza zlý
charset. - Staré súbory z účtovných alebo úradných systémov sú uložené vo Windows-1250 alebo ISO-8859-2.
- Už pokazený text sa prevedie ešte raz – vznikne dvojitý rozsypaný čaj.
Dá sa rozsypaný čaj opraviť vždy?
Takmer vždy, kým sú bajty nepoškodené. Oprava nie je možná, keď program nahradil písmená znakom ? alebo náhradným znakom � – pôvodná informácia je potom preč. Mojibuster opraví všetko, čo sa opraviť dá, a povie vám, koľko miest sa stratilo.
Ako rozsypanému čaju predísť
- Ukladajte súbory v UTF-8, súbory CSV pre Excel ako CSV UTF-8 (oddelený čiarkami).
- Uvádzajte kódovanie:
<meta charset="utf-8">v HTML,utf8mb4v MySQL a MariaDB. - Prevádzajte text len raz, na hranici medzi dvoma systémami.
- Pri importe vyberajte kódovanie sami, nespoliehajte sa na odhad programu.
Časté otázky
Ako sa mojibake vyslovuje?
Zhruba „mo-dži-ba-ke“, všetky štyri slabiky zreteľne. Je to japonské slovo, takže nemá výrazný prízvuk.
Je môj súbor poškodený alebo zavírený?
Nie. Rozsypaný čaj je problém zobrazenia, nie vírus, a obvykle neznamená stratu dát. Súbor bol len prečítaný v zlom kódovaní.
Aký je rozdiel medzi rozsypaným čajom a znakom �?
Rozsypaný čaj ako Äľ ešte obsahuje pôvodné bajty a dá sa opraviť. Znak � znamená, že program nedokázal bajt prečítať a nahradil ho – toto písmeno je stratené.
Nahráva sa môj text na server?
Nie. Mojibuster opravuje text priamo vo vašom prehliadači. Nikam sa neposiela ani neukladá.