Co je rozsypaný čaj (mojibake)?

Rozsypaný čaj, mezinárodně mojibake, je text, ve kterém se česká písmena změní v nesmyslné znaky: Ä› místo ě, Ĺ™ místo ř nebo ø místo ř. Vzniká, když se text uloží v jednom kódování a přečte v jiném – a téměř vždy se dá úplně opravit. Vložte níže pokažený text a vyzkoušejte to.

Funguje s textem a soubory:

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

Například exporty z Excelu, výpisy databází, titulky nebo kód webových stránek.

Opravit

  1. Přetáhněte soubor nebo vložte text
  2. Oprava proběhne automaticky
  3. Zkopírujte nebo stáhněte
nebo soubor jednoduše přetáhněte sem
  • Bez nahrávání. Soubory se opravují přímo ve vašem prohlížeči a nikdy neopustí zařízení.

  • Servery v EU. Mojibuster běží na serveru v zemi Finsko (EU), a proto platí obecné nařízení o ochraně osobních údajů (GDPR). Znění GDPR (EUR-Lex)

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

Text v UTF-8 přečtený jako Windows-1250

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

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

Další návody