Mojibake

Mojibake (文字化け uitspraak /ˌmodʑibake/) is jargon voor digitale teksten die verkeerd weergegeven worden. Problemen komen onder andere voor in webpagina's, e-mails en sms'jes.

De oorzaak van fouten is verkeerde interpretatie van informatie die in de vorm van bytes verstuurd wordt. Een byte kan 256 verschillende waarden hebben, genoeg voor de cijfers en letters van het Latijnse schrift, maar niet voor de vele speciale tekens zoals diakriteten, en al helemaal niet om alle schriften van de wereld weer te geven.

Een webpagina kan aangeven een bepaalde tekencodering te gebruiken, waarin bijvoorbeeld bepaalde bytes een cyrillisch teken voorstellen, maar als de tekencodering niet (correct) is opgegeven of door de browser wordt genegeerd, dan kan dat een onleesbare brij produceren. De problemen zijn nog groter als een simpel westers systeem te maken krijgt met schriften waar elk woord een eigen teken heeft, zoals Chinees en Japans schrift; die hebben zoveel gangbare tekens dat er twee bytes per teken nodig zijn.

Verouderde of te simpele systemen en verkeerde codering geven mojibake: teksten met fouten of een volkomen onleesbare brij. Een tekst die een accentteken zoals ë weergeeft als à zal meestal nog leesbaar zijn, maar een foute instelling voor een schriftsysteem geeft een onbruikbaar resultaat, zie de tabel onder het kopje Voorbeeld.

Codering

Een simpele oplossing om verkeerde weergaven te voorkomen, zou zijn om meer bytes per teken te reserveren; zo kan een reeks van vier bytes meer dan vier miljard waarden aannemen en dus vier miljard verschillende tekens weergeven. Het versturen kost echter vier keer zoveel tijd en energie, wat gewoonlijk niet acceptabel is. Daarom wordt een codering gemaakt: een reeks afspraken die bijvoorbeeld aangeeft dat een bytewaarde 65 overeenkomt met de hoofdletter A en 66 met hoofdletter B.

Coderingen maken gebruik van het feit dat de meeste teksten maar een klein deel van de beschikbare tekens gebruiken. Die krijgen een codering die binnen één byte past, de zeldzamere tekens, zoals de diakrieten krijgen een code van twee bytes. Er bestaan echter veel verschillende coderingen, waarvan er enkele genoemd worden in onderstaand voorbeeld.

Een teken dat niet als weer te geven teken wordt herkend, wordt op websites veelal aangeduid met �. Soms wordt de letter niet weergegeven en is de letter die erna komt ook niet zichtbaar (sces in plaats van scènes).

Etymologie

Mojibake is een Japans woord dat uit twee delen bestaat: moji=teken; karakter en bake=verandering.

Voorbeeld

CoderingBrowserinstellingResultaat
Arabisch voorbeeld:منتدى عرب شير مشاهدة الملف الشخصي
Betekenis, min of meer: Arabisch Share-forum Bekijk profiel
UTF-8ISO 8859-1منتدى عرب شير - مشاهدة الملف الشخصي
KOI8-Rы┘ы├ь╙ь╞ы┴ ь╧ь╠ь╗ ь╢ы┼ь╠ - ы┘ь╢ь╖ы┤ь╞ь╘ ь╖ы└ы┘ы└ы│ ь╖ы└ь╢ь╝ь╣ы┼
ISO 8859-5й…й†иЊиЏй‰ иЙиБиЈ иДйŠиБ - й…иДиЇй‡иЏиЉ иЇй„й…й„й иЇй„иДиЎиЕйŠ
CP 866Е┘Ж╪к╪п┘Й ╪╣╪▒╪и ╪┤┘К╪▒ - ┘Е╪┤╪з┘З╪п╪й ╪з┘Д┘Е┘Д┘Б ╪з┘Д╪┤╪о╪╡┘К
Windows-1256ISO 8859-6ظ…ظ†طھط¯ظ‰ ط¹ط±ط¨ ط´ظٹط± - ظ…ط´ط§ظ‡ط¯ط© ط§ظ„ظ…ظ„ظپ ط§ظ„ط´ط®طµظٹ
CP 852┘ů┘ćě¬ě»┘ë ě╣ě▒ěĘ ě┤┘Őě▒ - ┘ůě┤ěž┘çě»ěę ěž┘ä┘ů┘ä┘ü ěž┘äě┤ě«ěÁ┘Ő
ISO 8859-2منتدى عرب شير - مشاهدة الملف الشخصي
ASMO 708عàع╢ظ╔ظ»عë ظ╥ظ▒ظ╟ ظ═عèظ▒ - عàظ═ظ╞عçظ»ظ╚ ظ╞ع╡عàع╡ع┤ ظ╞ع╡ظ═ظ«ظ╬عè