Čo je rozsypaný čaj (mojibake)?

Rozsypaný čaj, medzinárodne mojibake, je text, v ktorom sa slovenské písmená zmenia na nezmyselné znaky: Äľ namiesto ľ, š namiesto š alebo è namiesto č. Vzniká, keď sa text uloží v jednom kódovaní a prečíta v inom – a takmer vždy sa dá úplne opraviť. Vložte nižšie pokazený text a vyskúšajte to.

Funguje s textom aj súbormi:

  • CSV
  • TXT
  • JSON
  • XML
  • SRT
  • VTT
  • TSV
  • MD
  • HTML
  • SQL
  • LOG

Napríklad exporty z Excelu, výpisy databáz, titulky alebo kód webových stránok.

Opraviť

  1. Pretiahnite súbor alebo vložte text
  2. Oprava prebehne automaticky
  3. Skopírujte alebo stiahnite
alebo súbor jednoducho pretiahnite sem
  • Bez nahrávania. Súbory sa opravujú priamo vo vašom prehliadači a nikdy neopustia zariadenie.

  • Servery v EÚ. Mojibuster beží na serveri v krajine Fínsko (EÚ), a preto platí všeobecné nariadenie o ochrane údajov (GDPR). Znenie GDPR (EUR-Lex)

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í.

Text v UTF-8 prečítaný ako Windows-1250

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

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 latin1 alebo latin2, 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, utf8mb4 v 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á.

Ďalšie návody