Odakle naziv?
Mojibake (文字化け) je japanska riječ: „moji” znači „znak”, a „bake” „preobrazba”. Devedesetih su japanska računala usporedno koristila nekoliko kodiranja – Shift_JIS, EUC-JP i ISO-2022-JP – pa su pokvarene e-poruke i stranice bile svakodnevica. Riječ je prešla u engleski i postala međunarodni izraz. Kod nas se obično kaže „čudni znakovi” ili „pokvarene kvačice”.
Kako nastaju čudni znakovi?
Računalo pohranjuje tekst kao bajtove. Kodiranje određuje koji bajt znači koji znak. U UTF-8 slovo ć zauzima dva bajta: C4 87. Program koji ih čita kao Windows-1250 prikazuje zaseban znak za svaki bajt: Ä za C4 i ‡ za 87.
U tom koraku ništa se ne gubi – bajtovi su još uvijek tu, samo su krivo pročitani. Zato se čudni znakovi obično mogu poništiti: Mojibuster pogrešne znakove pretvara natrag u bajtove i čita ih u pravom kodiranju.
Čudni znakovi
Šećer, čaša i žličica – sastanak u četvrtak u 15:00
Nakon popravka
Šećer, čaša i žličica – sastanak u četvrtak u 15:00
Dvije vrste hrvatskih čudnih znakova
ć,ÄŤ,šumjestoć,č,š– UTF-8 pročitan kao Windows-1250. Tipično za CSV datoteke otvorene u Excelu: kvačice u Excelu.æ,è,ðumjestoć,č,đ– stara datoteka u Windows-1250 ili ISO-8859-2 otvorena sa zapadnim postavkama: Windows-1250 u UTF-8.- U titlovima za filmove pojavljuju se obje varijante: kvačice u titlovima.
Mojibake u drugim jezicima
- Japanski:
縺薙s縺ォ縺。縺ッumjestoこんにちは– UTF-8 pročitan kao Shift_JIS. Više na japanskoj stranici. - Ruski:
ПриветumjestoПривет– UTF-8 pročitan kao Windows-1251. Rusi to zovu „krakozjabri”. - Zapadni jezici:
é,ñili€umjestoé,ñili€– najčešći oblik u svijetu.
Tipični uzroci
- Excel otvara CSV datoteku u UTF-8 bez BOM-a u kodiranju Windows-1250.
- Veza s bazom podataka koristi
latin1ililatin2, a podaci su u UTF-8. - Web-stranica ili e-poruka navodi pogrešan
charset. - Stare datoteke iz knjigovodstvenih ili državnih sustava spremljene su u Windows-1250 ili ISO-8859-2.
- Već pokvaren tekst pretvori se još jednom – nastaju dvostruko pokvareni znakovi.
Mogu li se čudni znakovi uvijek popraviti?
Gotovo uvijek, dok god su bajtovi netaknuti. Popravak nije moguć kad je program slova zamijenio znakom ? ili zamjenskim znakom � – izvorna informacija je nestala. Mojibuster popravlja sve što se može i navodi koliko je mjesta izgubljeno.
Kako spriječiti čudne znakove?
- Spremajte datoteke u UTF-8, a CSV datoteke za Excel kao CSV UTF-8 (razdvojeno zarezima).
- Navedite kodiranje:
<meta charset="utf-8">u HTML-u,utf8mb4u MySQL-u i MariaDB-u. - Pretvarajte tekst samo jednom, na granici između dvaju sustava.
- Pri uvozu sami odaberite kodiranje umjesto da se oslanjate na pogađanje programa.
Česta pitanja
Kako se izgovara mojibake?
Otprilike „mo-dži-ba-ke”, sa sva četiri sloga jasno izgovorena. Riječ je japanska, pa nema jakog naglaska.
Je li moja datoteka oštećena ili zaražena virusom?
Ne. Čudni znakovi problem su prikaza, a ne virus, i obično ne znače gubitak podataka. Datoteka je samo pročitana u krivom kodiranju.
Po čemu se čudni znakovi razlikuju od znaka �?
Znakovi poput ć još uvijek sadrže izvorne bajtove i mogu se popraviti. Znak � znači da program nije mogao pročitati bajt i zamijenio ga je – to je slovo izgubljeno.
Šalje li se moj tekst na poslužitelj?
Ne. Mojibuster popravlja tekst u vašem pregledniku. Ne šalje se nikamo i nigdje se ne sprema.