Hvor ordet kommer fra
Mojibake (文字化け) er japansk: »moji« betyder »tegn« og »bake« »forvandling«. I 1990’erne brugte japanske computere flere tegnkodninger side om side – Shift_JIS, EUC-JP og ISO-2022-JP – og ulæselige e-mails og hjemmesider var hverdag. Ordet bed sig fast og kom ind i engelsk. På dansk siger vi oftest bare »mærkelige tegn«, eller at »æ, ø og å bliver forkerte«. Ikke at forveksle med »aa« i gamle tekster og navne som Aalborg: det er stavemåden fra før retskrivningsreformen i 1948, ikke en kodningsfejl, og Mojibuster lader den være.
Hvordan mojibake opstår
En computer gemmer tekst som byte. Tegnkodningen bestemmer, hvilke byte der hører til hvilket tegn. I UTF-8 gemmes ø som de to byte C3 B8. Et program, der læser de byte som Windows-1252, viser ét tegn pr. byte: Ã for C3 og ¸ for B8.
I det trin går intet tabt: bytene er der stadig, de læses bare forkert. Derfor kan mojibake næsten altid vendes tilbage: Mojibuster regner de forkerte tegn om til byte og læser dem rigtigt igen.
Mojibake
Rødgrød med fløde, blåbær, Ærø, Søren og Åse – 25 €
Rettet
Rødgrød med fløde, blåbær, Ærø, Søren og Åse – 25 €
Mojibake på andre sprog
- Japansk:
縺薙s縺ォ縺。縺ッi stedet forこんにちは– UTF-8 læst som Shift_JIS. Mere på den japanske side. - Kinesisk:
浣犲ソi stedet for你好– UTF-8 læst som GBK. På kinesisk hedder det 乱码 (luànmǎ, »kaotisk kode«). - Russisk:
Приветi stedet forПривет– UTF-8 læst som Windows-1251. Russerne kalder det »krakozjabry«. - Dansk, norsk, svensk, tysk …:
æ,øeller€i stedet foræ,øeller€– den mest udbredte form i verden. Alle mønstre: ø i stedet for ø.
Typiske årsager
- Excel åbner en CSV i UTF-8 uden BOM som ANSI ved dobbeltklik: Excel viser mærkelige tegn.
- En CSV-eksport fra en webshop, et CRM-system eller banken åbnes med den forkerte tegnkodning: ret CSV.
- En hjemmeside eller en e-mail angiver det forkerte
charset, eller databaseforbindelsen brugerlatin1: ret UTF-8-tegn. - Undertekster er gemt i en gammel tegnkodning: undertekster med mærkelige tegn.
- Tekst, der allerede er ødelagt, konverteres igen – dobbelt mojibake som
ø.
Kan det altid rettes?
Næsten altid, så længe bytene er intakte. Det går ikke længere, hvis et program allerede har erstattet tegnene med ? eller med erstatningstegnet �: så er den oprindelige information væk. Mojibuster retter alt, hvad der kan rettes, op til tre kodningsniveauer på én gang, og fortæller, hvor mange tegn der er tabt. Hvornår ? og � stadig kan reddes: spørgsmålstegn i stedet for æ, ø og å.
Sådan undgår du det
- Gem filer som UTF-8 – CSV-filer til Excel som CSV UTF-8 (kommasepareret), der tilføjer en BOM.
- Angiv tegnkodningen:
<meta charset="utf-8">i HTML,utf8mb4i MySQL og MariaDB. - Konvertér kun tekst én gang, ved grænsen mellem to systemer.
- Vælg selv tegnkodningen, når du importerer, i stedet for at lade programmet gætte.
Ofte stillede spørgsmål
Hvordan udtaler man mojibake?
Omtrent som »mo-dji-ba-ke«, med alle fire stavelser udtalt.
Er min fil ødelagt eller inficeret?
Nej. Mojibake er et visningsproblem, ikke en virus, og som regel går der ingen data tabt. Filen læses bare med den forkerte tegnkodning.
Hvad er forskellen på mojibake og �?
Mærkelige tegn som ø indeholder stadig de oprindelige byte og kan rettes. Tegnet � betyder, at et program ikke kunne læse en byte og erstattede den: det tegn er tabt.
Bliver min tekst sendt til en server?
Nej. Mojibuster retter teksten i din browser. Intet bliver sendt eller gemt.