Hvor ordet kommer fra
Mojibake (文字化け) er japansk: «moji» betyr «tegn» og «bake» «forvandling». På 1990-tallet brukte japanske datamaskiner flere tegnsett side om side – Shift_JIS, EUC-JP og ISO-2022-JP – og uleselige e-poster og nettsider var hverdagskost. Ordet festet seg og kom inn i engelsk. På norsk sier vi som oftest bare «rare tegn», eller at «æ, ø og å blir feil». Ikke forveksle det med «aa» i gamle tekster og navn som Aasen: det er skrivemåten fra før rettskrivingsreformen i 1917, ikke en kodingsfeil, og Mojibuster lar den være.
Hvordan mojibake oppstår
En datamaskin lagrer tekst som byte. Tegnsettet bestemmer hvilke byte som hører til hvilket tegn. I UTF-8 lagres ø som de to bytene C3 B8. Et program som leser disse bytene som Windows-1252, viser ett tegn per byte: Ã for C3 og ¸ for B8.
I dette trinnet går ingenting tapt: bytene er der fortsatt, de leses bare feil. Derfor kan mojibake nesten alltid reverseres: Mojibuster regner de feile tegnene om til byte og leser dem riktig igjen.
Mojibake
Rømmegrøt med blåbær, Bodø, Øystein og Åse – 1 250,00 kr
Fikset
Rømmegrøt med blåbær, Bodø, Øystein og Åse – 1 250,00 kr
Mojibake på andre språk
- Japansk:
縺薙s縺ォ縺。縺ッi stedet forこんにちは– UTF-8 lest som Shift_JIS. Mer på den japanske siden. - Kinesisk:
浣犲ソi stedet for你好– UTF-8 lest som GBK. På kinesisk heter det 乱码 (luànmǎ, «kaotisk kode»). - Russisk:
Приветi stedet forПривет– UTF-8 lest som Windows-1251. Russerne kaller det «krakozjabry». - Norsk, dansk, svensk, tysk …:
æ,øeller€i stedet foræ,øeller€– den mest utbredte formen i verden. Alle mønstrene: ø i stedet for ø.
Typiske årsaker
- Excel åpner en CSV i UTF-8 uten BOM som ANSI ved dobbeltklikk: Excel viser rare tegn.
- En CSV-eksport fra en nettbutikk, et CRM-system eller banken åpnes med feil tegnsett: fiks CSV.
- En nettside eller en e-post oppgir feil
charset, eller databasetilkoblingen brukerlatin1: fiks UTF-8-tegn. - Undertekster er lagret i et gammelt tegnsett: undertekster med rare tegn.
- Tekst som allerede er ødelagt, konverteres på nytt – dobbel mojibake som
ø.
Kan det alltid fikses?
Nesten alltid, så lenge bytene er intakte. Det går ikke lenger hvis et program allerede har erstattet tegnene med ? eller med erstatningstegnet �: da er den opprinnelige informasjonen borte. Mojibuster fikser alt som kan fikses, opptil tre kodingsnivåer på én gang, og forteller hvor mange tegn som er tapt. Når ? og � fortsatt kan reddes: spørsmålstegn i stedet for æ, ø og å.
Slik unngår du det
- Lagre filer som UTF-8 – CSV-filer til Excel som CSV UTF-8 (kommadelt), som legger til en BOM.
- Oppgi tegnsettet:
<meta charset="utf-8">i HTML,utf8mb4i MySQL og MariaDB. - Konverter tekst bare én gang, ved grensen mellom to systemer.
- Velg tegnsettet selv når du importerer, i stedet for å la programmet gjette.
Ofte stilte spørsmål
Hvordan uttaler man mojibake?
Omtrent som «mo-dsji-ba-ke», med alle fire stavelsene uttalt.
Er filen min ødelagt eller infisert?
Nei. Mojibake er et visningsproblem, ikke et virus, og som regel går ingen data tapt. Filen leses bare med feil tegnsett.
Hva er forskjellen på mojibake og �?
Rare tegn som ø inneholder fortsatt de opprinnelige bytene og kan fikses. Tegnet � betyr at et program ikke kunne lese en byte og erstattet den: det tegnet er tapt.
Blir teksten min sendt til en server?
Nei. Mojibuster fikser teksten i nettleseren din. Ingenting blir sendt eller lagret.