Aller au contenu

Mojibake

Un article de Wikipédia, l'encyclopédie libre.
LaWikipédia en japonaisencodé enUTF-8,affiché avec l’encodageWindows-1252.

Mojibake(Văn tự hóa け?)est unemprunt lexicalaujaponaisqui signifie que les caractères affichés à l'écran d'un logiciel informatique ne s'affichent pas correctement, à cause d'un problème decodage.En langage courant et face à élément illisible le français dira« je vois des hiéroglyphes ».Ce concept est similaire au concept de krakozyabry (кракозя́бры).

Les problèmes d'encodage de caractères sont apparus dès que des encodagesEBCDICetASCIIsont apparus dans lesannées 1960.

La mise en réseau de divers matériels électroniques utilisant des conventions différentes pour le codage des caractères a accentué le problème.

Toutefois, avec l'émergence d'Unicode,et celle d'indicateurs d'encodage, le problème pourrait se réduire à un problème d'interopérabilité.

Le mot japonaisVăn tự hóa け(mojibake?) est composé deVăn tự(moji?), qui signifiecaractèreetHóa け(bake?), provenant du verbeHóa ける(bakeru?), qui signifieapparaître de manière déguisée, prendre la forme de, changer pour le pire.Littéralement,mojibakesignifie donc « changement de caractère ».

Le phénomène demojibakea lieu lorsque lecodage des caractèresutilisé pour enregistrer un texte est différent de celui utilisé pour l'afficher, parce qu'un logiciel intermédiaire n'a pas effectué la conversion nécessaire.

Ceci est lié à certaines technologies particulières qui ne donnent pas les bonnes informations sur le codage de caractères, ou qui donnent des informations contradictoires, comme aujourd'hui lefichier texteou le web, même si d'après les RFC, d'autres protocoles ont été concernés dans le passé.

Dans le cas d'une page web, le codage utilisé peut être spécifié explicitement soit par le biais d'une baliseHTMLsoit par le biais d'un en-têteHTTP,de sorte que le navigateur est capable d'afficher le texte avec le codage dans lequel il a été écrit. Cependant, si cette information est erronée ou absente, ce ne seront pas les bons caractères qui s'afficheront. Par exemple, si le mot «Văn tự hóa け» est codé enUTF-8mais décodé comme de l'ISO/CEI 8859-1,le navigateur affichera les caractères « æ–‡å—化け ». Quand le codage n'est pas spécifié explicitement, la plupart des navigateurs modernes utilisent desheuristiquespour tenter de déterminer le codage du texte dans le cas où l'option « détection automatique de l'encodage » est sélectionnée et utilisent le codage par défaut dans le cas contraire.

Cas du japonais

[modifier|modifier le code]

Lemojibakeest un phénomène particulièrement répandu enjaponais(ce qui explique la nécessité de créer un mot pour le nommer) car il existe plusieurs codages possibles pour écrire le japonais. En particulier, la famille de l'ISO/CEI 2022(Shift-JIS,EUC-JP) est plus complexe et éventuellement plus à même de ne pas être prise en charge très correctement par tous les logiciels.UTF-8est également utilisé. Or, selon lesystème d'exploitation,le codage par défaut n'est pas le même. Par conséquent, si l'information concernant le codage d'une page est absente, le codage par défaut utilisé pour afficher la page ne sera pas le même. Il en résulte que la page seramojibakesi elle n'est pas affichée sur le même système d'exploitation que celui avec lequel elle a été écrite.

De plus, il est possible que d'autres problèmes d'interopérabilité existent, vu que certains logiciels pourraient ne pas prendre en compte le fait que certaines extensions multi-octet de l'ASCII utilisent des caractères dans la plage ASCII comme octets suivant le premier.

Le problème dumojibakene se limite cependant pas aux seules pages web. SousWindows,certaines applications sont dites « Unicode » (application tournant quelle que soit la langue de Windows) et d'autres sont localisées. Si une application japonaise n'est pas Unicode, un utilisateur d'une version française de Windows devra passer le système d'exploitation complet en mode japonais afin de pouvoir la voir correctement. Les applications japonaises deviendront alors lisibles mais les applications françaises non Unicode deviendront à leur tourmojibake.

Il peut aussi arriver de recevoir de courts messages texte en chinois alors que leur expéditeur assure n'avoir rien envoyé. Il ne s'agit souvent pas d'un piratage mais d'un simple accusé de réception mal encodé, par exemple:

  1. Message texte reçu =Ấp 獳 tuệ 攠⁴ mạc 〱㈳㐵㘷㠹〠 săn đảo 敥摥搮
  2. Converti[1]en octets dans le codageUTF-16BE= 6D65 7373 6167 6520 2074 6F20 3031 3233 3435 3637 3839 3020 7375 6363 6565 6465 642E
  3. Formaté enUTF-8(ajout d'espaces) = 6D 65 73 73 61 67 65 20 20 74 6F 20 30 31 32 33 34 35 36 37 38 39 30 20 73 75 63 63 65 65 64 65 64 2E
  4. Interprété en tant que caractères enUTF-8[1]= "message to 01234567890 succeeded."
  1. aetb(en)«Unicode code converter», surgithub.io.

Liens externes

[modifier|modifier le code]