Hva er mojibake?

Mojibake er fagordet for rare tegn: ø i stedet for ø, æ i stedet for æ eller € i stedet for €. Det oppstår når en tekst lagres med ett tegnsett og leses med et annet – og som regel kan det fikses helt. Lim inn en ødelagt tekst nedenfor og prøv selv.

Fungerer med tekst og med disse filene:

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

For eksempel eksporter fra Excel, databasesikkerhetskopier, undertekster eller kode fra nettsider.

Fiks

  1. Dra en fil hit eller lim inn tekst
  2. Fiksingen skjer automatisk
  3. Kopier eller last ned
eller dra en fil hit
  • Ingen opplasting. Filene dine fikses direkte i nettleseren og forlater aldri enheten din.

  • Servere i EU. Mojibuster kjører på en server i Finland (EU); personvernforordningen (GDPR) gjelder – i Norge gjennom EØS-avtalen. GDPR-teksten (EUR-Lex, engelsk)

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.

UTF-8-tekst lest som Windows-1252

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 bruker latin1: 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, utf8mb4 i 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.

Les mer