Hvad er mojibake?

Mojibake er fagordet for mærkelige tegn: ø i stedet for ø, æ i stedet for æ eller € i stedet for €. Det opstår, når en tekst gemmes med én tegnkodning og læses med en anden – og som regel kan det rettes helt. Sæt en ødelagt tekst ind nedenfor, og prøv selv.

Virker med tekst og med disse filer:

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

For eksempel eksporter fra Excel, databasebackups, undertekster eller kode fra hjemmesider.

Ret

  1. Træk en fil herind, eller sæt tekst ind
  2. Rettelsen sker automatisk
  3. Kopiér eller download
eller træk en fil herind
  • Ingen upload. Dine filer rettes direkte i browseren og forlader aldrig din enhed.

  • Servere i EU. Mojibuster kører på en server i Finland (EU); databeskyttelsesforordningen (GDPR) gælder. GDPR-teksten (EUR-Lex)

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.

UTF-8-tekst læst som Windows-1252

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

Læs mere