Wat is mojibake?
Mojibake zijn onleesbare tekens die ontstaan als een tekst met de ene codering wordt opgeslagen en met een andere wordt gelezen. Meestal gaat het om UTF-8 dat per ongeluk als Windows-1252 of ISO-8859-1 wordt gelezen. Elke byte van een speciaal teken verschijnt dan als een eigen teken.
Veelvoorkomende oorzaken
- De databaseverbinding gebruikt
latin1, terwijl de gegevens in UTF-8 staan. - De webserver stuurt
charset=ISO-8859-1, maar de pagina is opgeslagen in UTF-8. - Een e-mail- of nieuwsbriefprogramma geeft de verkeerde codering op.
- Een oude website of een verhuisde WordPress-installatie mengt Latin-1- en UTF-8-gegevens.
- Tekst wordt gekopieerd tussen programma’s die verschillende coderingen verwachten.
Twee keer kapot: ë
Wordt tekst die al kapot is nog een keer verkeerd omgezet, dan ontstaat dubbele mojibake: ë wordt eerst ë en daarna ë. Mojibuster herkent ook die niveaus en herstelt er tot drie in één keer.
Voor ontwikkelaars: de oorzaak oplossen
- Zet
<meta charset="utf-8">in de HTML en stuur de headerContent-Type: text/html; charset=utf-8. - Gebruik
utf8mb4in MySQL en MariaDB voor tabellen en verbinding (SET NAMES utf8mb4). - Sla bronbestanden op als UTF-8 zonder BOM.
- Zet tekst maar één keer om: op de grens tussen je eigen systeem en de buitenwereld.
Veelgestelde vragen
Wat betekent het teken �?
Dat is het vervangingsteken U+FFFD. Een programma zet het neer als het een byte niet kan lezen. Het oorspronkelijke teken is dan weg; Mojibuster laat zien hoeveel plekken het betreft.
Kan ik ook HTML-codes zoals ë omzetten?
Ja. Zet de optie Ook HTML-codes omzetten aan. Codes als ë, ë en ë worden dan echte tekens.
Wordt mijn tekst ergens opgeslagen?
Nee. Het herstellen gebeurt in je browser. De tekst wordt niet verstuurd en niet opgeslagen.
Werkt het ook met andere talen?
Ja. Mojibuster herstelt elk teken dat vanuit UTF-8 verkeerd is gelezen, bijvoorbeeld Franse en Spaanse accenten, Duitse umlauts, emoji of Japans schrift.