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.
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
charsetop, of de databaseverbinding gebruiktlatin1: 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,utf8mb4in 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.