Odkud se vzalo slovo mojibake?
Mojibake (文字化け) je japonské slovo: „moji“ znamená „znak“ a „bake“ „proměna“. V 90. letech používaly japonské počítače vedle sebe několik kódování – Shift_JIS, EUC-JP a ISO-2022-JP – a pokažené e-maily a stránky byly běžnou věcí. Slovo přešlo do angličtiny a stalo se mezinárodním pojmem. Česky se stejnému jevu říká „rozsypaný čaj“.
Jak rozsypaný čaj vzniká
Počítač ukládá text jako bajty. Kódování určuje, který bajt znamená které písmeno. V UTF-8 zabírá ř dva bajty: C5 99. Program, který je čte jako Windows-1250, zobrazí pro každý bajt samostatný znak: Ĺ pro C5 a ™ pro 99.
Při tom se nic neztratí – bajty jsou pořád na místě, jen byly přečteny špatně. Proto se rozsypaný čaj obvykle dá vrátit zpět: Mojibuster převede chybné znaky znovu na bajty a přečte je ve správném kódování.
Rozsypaný čaj
PĹ™Ăliš ĹľluĹĄouÄŤkĂ˝ pes ĂşpÄ›l ďábelskĂ© Ăłdy – schĹŻzka ve stĹ™edu
Po opravě
Příliš žluťoučký pes úpěl ďábelské ódy – schůzka ve středu
Dva druhy českého rozsypaného čaje
Ä›,Ĺ™,šmístoě,ř,š– UTF-8 přečtené jako Windows-1250. Typické pro soubory CSV otevřené v Excelu: rozsypaný čaj v Excelu.ø,è,ìmístoř,č,ě– starý soubor ve Windows-1250 nebo ISO-8859-2 otevřený se západním nastavením: převod Windows-1250 na UTF-8.- U titulků k filmům se objevují obě varianty: rozsypaný čaj v titulcích.
Mojibake v jiných jazycích
- Japonština:
縺薙s縺ォ縺。縺ッmístoこんにちは– UTF-8 přečtené jako Shift_JIS. Více na japonské stránce. - Ruština:
ПриветmístoПривет– UTF-8 přečtené jako Windows-1251. Rusové tomu říkají „krakozjabry“. - Západní jazyky:
é,ñnebo€místoé,ñnebo€– nejčastější podoba na světě.
Typické příčiny
- Excel otevře soubor CSV v UTF-8 bez BOM v kódování Windows-1250.
- Připojení k databázi používá
latin1nebolatin2, ale data jsou v UTF-8. - Web nebo e-mail uvádí špatný
charset. - Staré soubory z účetních nebo úředních systémů jsou uložené ve Windows-1250 nebo ISO-8859-2.
- Už pokažený text se převede ještě jednou – vznikne dvojitý rozsypaný čaj.
Dá se rozsypaný čaj opravit vždy?
Téměř vždy, dokud jsou bajty nepoškozené. Oprava není možná, když program nahradil písmena znakem ? nebo náhradním znakem � – původní informace je pak pryč. Mojibuster opraví vše, co se opravit dá, a řekne vám, kolik míst se ztratilo.
Jak rozsypanému čaji předejít
- Ukládejte soubory v UTF-8, soubory CSV pro Excel jako CSV UTF-8 (s oddělovači).
- Uvádějte kódování:
<meta charset="utf-8">v HTML,utf8mb4v MySQL a MariaDB. - Převádějte text jen jednou, na hranici mezi dvěma systémy.
- Při importu kódování vybírejte sami, nespoléhejte na odhad programu.
Časté otázky
Jak se mojibake vyslovuje?
Zhruba „mo-dži-ba-ke“, všechny čtyři slabiky zřetelně. Je to japonské slovo, takže nemá výrazný přízvuk.
Je můj soubor poškozený nebo zavirovaný?
Ne. Rozsypaný čaj je problém zobrazení, ne virus, a obvykle neznamená ztrátu dat. Soubor byl jen přečten ve špatném kódování.
Jaký je rozdíl mezi rozsypaným čajem a znakem �?
Rozsypaný čaj jako Ĺ™ ještě obsahuje původní bajty a dá se opravit. Znak � znamená, že program nedokázal bajt přečíst a nahradil ho – toto písmeno je ztracené.
Nahrává se můj text na server?
Ne. Mojibuster opravuje text přímo ve vašem prohlížeči. Nikam se neposílá ani neukládá.