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.
Č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
latin1alilatin2, 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,utf8mb4v 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.