Kaj je mojibake oziroma čudni znaki?

Mojibake so čudni znaki, ki se pojavijo namesto šumnikov: ÄŤ namesto č, š namesto š ali è namesto č. Nastanejo, ko je besedilo shranjeno v enem kodiranju in prebrano v drugem – in jih je skoraj vedno mogoče v celoti popraviti. Spodaj prilepite pokvarjeno besedilo in preverite.

Deluje z besedilom in datotekami:

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

Na primer izvozi iz Excela, izpisi baz podatkov, podnapisi za filme ali koda spletnih strani.

Popravi

  1. Povlecite datoteko ali prilepite besedilo
  2. Popravilo poteka samodejno
  3. Kopirajte ali prenesite
ali datoteko preprosto povlecite sem
  • Brez pošiljanja. Datoteke se popravijo v vašem brskalniku in nikoli ne zapustijo naprave.

  • Strežniki v EU. Mojibuster deluje na strežniku v EU (Finska), zato velja Splošna uredba o varstvu podatkov (GDPR). Besedilo GDPR (EUR-Lex)

Od kod ime?

Mojibake (文字化け) je japonska beseda: „moji” pomeni „znak”, „bake” pa „preobrazba”. V devetdesetih so japonski računalniki vzporedno uporabljali več kodiranj – Shift_JIS, EUC-JP in ISO-2022-JP – zato so bila pokvarjena e-sporočila in strani nekaj vsakdanjega. Beseda je prešla v angleščino in postala mednarodni izraz. Pri nas navadno rečemo „čudni znaki” ali „pokvarjeni šumniki”.

Kako nastanejo čudni znaki?

Računalnik shranjuje besedilo kot bajte. Kodiranje določa, kateri bajt pomeni kateri znak. V UTF-8 črka š zaseda dva bajta: C5 A1. Program, ki ju bere kot Windows-1250, prikaže za vsak bajt svoj znak: Ĺ za C5 in ˇ za A1.

Pri tem se nič ne izgubi – bajti so še vedno tam, le napačno so prebrani. Zato je čudne znake običajno mogoče razveljaviti: Mojibuster napačne znake pretvori nazaj v bajte in jih prebere v pravem kodiranju.

Besedilo v UTF-8, prebrano kot Windows-1250

Čudni znaki

Češnje, žlica in šopek – sestanek v četrtek ob 15:00

Po popravilu

Češnje, žlica in šopek – sestanek v četrtek ob 15:00

Dve vrsti slovenskih čudnih znakov

  • ÄŤ, š, Ĺľ namesto č, š, ž – UTF-8, prebran kot Windows-1250. Značilno za datoteke CSV, odprte v Excelu: šumniki v Excelu.
  • è namesto č – stara datoteka v Windows-1250 ali ISO-8859-2, odprta z zahodnimi nastavitvami: Windows-1250 v UTF-8.
  • V podnapisih za filme se pojavljata obe različici: šumniki v podnapisih.

Mojibake v drugih jezikih

  • Japonščina: 縺薙s縺ォ縺。縺ッ namesto こんにちは – UTF-8, prebran kot Shift_JIS. Več na japonski strani.
  • Ruščina: Привет namesto Привет – UTF-8, prebran kot Windows-1251. Rusi temu rečejo „krakozjabri”.
  • Zahodni jeziki: é, ñ ali € namesto é, ñ ali € – najpogostejša oblika na svetu.

Tipični vzroki

  • Excel odpre datoteko CSV v UTF-8 brez BOM v kodiranju Windows-1250.
  • Povezava z bazo podatkov uporablja latin1 ali latin2, podatki pa so v UTF-8.
  • Spletna stran ali e-sporočilo navaja napačen charset.
  • Stare datoteke iz računovodskih ali državnih sistemov so shranjene v Windows-1250 ali ISO-8859-2.
  • Že pokvarjeno besedilo se pretvori še enkrat – nastanejo dvojno pokvarjeni znaki.

Ali je čudne znake vedno mogoče popraviti?

Skoraj vedno, dokler so bajti nedotaknjeni. Popravilo ni mogoče, ko je program črke zamenjal z znakom ? ali z nadomestnim znakom � – izvirni podatek je izgubljen. Mojibuster popravi vse, kar se da, in navede, koliko mest je izgubljenih.

Kako preprečiti čudne znake?

  • Datoteke shranjujte v UTF-8, datoteke CSV za Excel pa kot CSV UTF-8 (z vejicami ločeno).
  • Navedite kodiranje: <meta charset="utf-8"> v HTML, utf8mb4 v MySQL in MariaDB.
  • Besedilo pretvorite samo enkrat, na meji med dvema sistemoma.
  • Pri uvozu sami izberite kodiranje, namesto da se zanesete na ugibanje programa.

Pogosta vprašanja

Kako se izgovori mojibake?

Približno „mo-dži-ba-ke”, z jasno izgovorjenimi vsemi štirimi zlogi. Beseda je japonska, zato nima močnega naglasa.

Je moja datoteka poškodovana ali okužena z virusom?

Ne. Čudni znaki so težava prikaza, ne virus, in običajno ne pomenijo izgube podatkov. Datoteka je le prebrana v napačnem kodiranju.

V čem se čudni znaki razlikujejo od znaka �?

Znaki, kot je ÄŤ, še vedno vsebujejo izvirne bajte in jih je mogoče popraviti. Znak � pomeni, da program bajta ni mogel prebrati in ga je zamenjal – ta črka je izgubljena.

Se moje besedilo pošilja na strežnik?

Ne. Mojibuster popravi besedilo v vašem brskalniku. Nikamor se ne pošlje in nikjer ne shrani.

Več navodil