Wat is mojibake?

Mojibake is de vakterm voor rare tekens: ë in plaats van ë, é in plaats van é of € in plaats van €. Het ontstaat als een tekst met de ene codering wordt opgeslagen en met een andere wordt gelezen – en meestal is het volledig te herstellen. Plak hieronder een kapotte tekst en probeer het.

Werkt met tekst en met deze bestanden:

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

Bijvoorbeeld exports uit Excel, databaseback-ups, ondertitels of websitecode.

Herstellen

  1. Sleep een bestand hierheen of plak tekst
  2. Het herstellen gaat automatisch
  3. Kopieer of download
of sleep een bestand hierheen
  • Geen upload. Je bestanden worden direct in je browser hersteld en verlaten je apparaat nooit.

  • Servers in de EU. Mojibuster draait op een server in Finland (EU); de Algemene verordening gegevensbescherming (AVG) is van toepassing. Tekst van de AVG (EUR-Lex)

Waar het woord vandaan komt

Mojibake (文字化け) is Japans: “moji” betekent “teken” en “bake” “verandering”. In de jaren negentig gebruikten Japanse computers meerdere coderingen naast elkaar – Shift_JIS, EUC-JP en ISO-2022-JP – en onleesbare e-mails en webpagina’s waren aan de orde van de dag. Het woord bleef hangen en kwam in het Engels terecht. In het Nederlands spreken we meestal gewoon van “rare tekens” of “vreemde tekens”.

Hoe mojibake ontstaat

Een computer slaat tekst op als bytes. De codering bepaalt welke bytes bij welk teken horen. In UTF-8 wordt ë opgeslagen als de twee bytes C3 AB. Een programma dat deze bytes als Windows-1252 leest, toont per byte een teken: Ã voor C3 en « voor AB.

Bij die stap gaat niets verloren: de bytes zijn er nog, ze worden alleen verkeerd gelezen. Daarom is mojibake bijna altijd terug te draaien: Mojibuster zet de verkeerde tekens terug om naar bytes en leest ze opnieuw correct.

UTF-8-tekst gelezen als Windows-1252

Mojibake

Ruïne, coördinatie, financiën, café – € 5

Hersteld

Ruïne, coördinatie, financiën, café – € 5

Mojibake in andere talen

  • Japans: 縺薙s縺ォ縺。縺ッ in plaats van こんにちは – UTF-8 gelezen als Shift_JIS. Meer op de Japanse pagina.
  • Chinees: 浣犲ソ in plaats van 你好 – UTF-8 gelezen als GBK. In het Chinees heet het 乱码 (luànmǎ, “chaotische code”).
  • Russisch: Привет in plaats van Привет – UTF-8 gelezen als Windows-1251. Russen noemen het “krakozjabry”.
  • Nederlands, Frans, Duits…: ë, é of € in plaats van ë, é of € – de meest voorkomende vorm ter wereld.

Typische oorzaken

  • Excel opent een CSV in UTF-8 zonder BOM met een dubbelklik als ANSI: Excel toont rare tekens.
  • Een CSV-export uit een webshop, CRM of bank wordt met de verkeerde codering geopend: CSV herstellen.
  • Een website of e-mail geeft de verkeerde charset op, of de databaseverbinding gebruikt latin1: UTF-8-tekens herstellen.
  • Ondertitels zijn in een oude codering opgeslagen: ondertitels met rare tekens.
  • Tekst die al kapot is, wordt opnieuw omgezet – dubbele mojibake zoals ë.

Is het altijd te herstellen?

Bijna altijd, zolang de bytes intact zijn. Het lukt niet meer als een programma de tekens al heeft vervangen door ? of door het vervangingsteken �: dan is de oorspronkelijke informatie weg. Mojibuster herstelt alles wat te herstellen is, tot drie coderingsniveaus in één keer, en vertelt je hoeveel tekens verloren zijn.

Zo voorkom je het

  • Sla bestanden op als UTF-8 – CSV’s voor Excel als CSV UTF-8 (door komma’s gescheiden), dat een BOM toevoegt.
  • Geef de codering op: <meta charset="utf-8"> in HTML, utf8mb4 in MySQL en MariaDB.
  • Zet tekst maar één keer om, op de grens tussen twee systemen.
  • Kies bij het importeren zelf de codering in plaats van het programma te laten raden.

Veelgestelde vragen

Hoe spreek je mojibake uit?

Ongeveer als “mo-dzjie-ba-ke”, met alle vier de lettergrepen uitgesproken.

Is mijn bestand beschadigd of besmet?

Nee. Mojibake is een weergaveprobleem, geen virus, en meestal gaan er geen gegevens verloren. Het bestand wordt alleen met de verkeerde codering gelezen.

Wat is het verschil tussen mojibake en �?

Rare tekens zoals ë bevatten nog de oorspronkelijke bytes en zijn te herstellen. Het teken � betekent dat een programma een byte niet kon lezen en het heeft vervangen: dat teken is verloren.

Wordt mijn tekst naar een server gestuurd?

Nee. Mojibuster herstelt de tekst in je browser. Er wordt niets verstuurd of opgeslagen.

Meer uitleg