Da dove viene la parola
Mojibake (文字化け) è giapponese: “moji” significa “carattere” e “bake” “trasformazione”. Negli anni ’90 i computer giapponesi usavano più codifiche in parallelo – Shift_JIS, EUC-JP e ISO-2022-JP – e le e-mail e le pagine web illeggibili erano all’ordine del giorno. La parola è rimasta ed è arrivata in inglese. In italiano si parla più spesso di “caratteri strani” o “lettere accentate sbagliate”.
Come nasce il mojibake
Il computer salva il testo come byte. La codifica stabilisce quali byte corrispondono a quale carattere. In UTF-8 la è viene salvata come i due byte C3 A8. Un programma che legge questi byte come Windows-1252 mostra un carattere per ogni byte: Ã per C3 e ¨ per A8.
In questo passaggio non si perde nulla: i byte ci sono ancora, vengono solo letti nel modo sbagliato. Per questo il mojibake si può quasi sempre annullare: Mojibuster ritrasforma i caratteri sbagliati in byte e li rilegge correttamente.
Mojibake
Perché, più, città , caffè – 5 €
Corretto
Perché, più, città, caffè – 5 €
Il mojibake in altre lingue
- Giapponese:
縺薙s縺ォ縺。縺ッal posto diこんにちは– UTF-8 letto come Shift_JIS. Di più nella pagina in giapponese. - Cinese:
浣犲ソal posto di你好– UTF-8 letto come GBK. In cinese si chiama 乱码 (luànmǎ, “codice caotico”). - Russo:
Приветal posto diПривет– UTF-8 letto come Windows-1251. I russi lo chiamano “krakozyabry”. - Italiano, francese, spagnolo…:
è,òo€al posto diè,òo€– la forma più diffusa al mondo.
Cause tipiche
- Excel apre con un doppio clic un CSV in UTF-8 senza BOM come se fosse ANSI: Excel mostra caratteri strani.
- Un’esportazione CSV da e-commerce, CRM o banca viene aperta con la codifica sbagliata: correggere un CSV.
- Un sito o un’e-mail dichiara il
charsetsbagliato, oppure la connessione al database usalatin1: correggere caratteri UTF-8. - I sottotitoli sono stati salvati in una vecchia codifica: sottotitoli con caratteri strani.
- Un testo già rovinato viene convertito di nuovo – doppio mojibake come
è.
Si può sempre correggere?
Quasi sempre, finché i byte sono intatti. Non è più possibile quando un programma ha già sostituito i caratteri con ? o con il carattere sostitutivo �: l’informazione originale è persa. Mojibuster corregge tutto ciò che si può correggere, fino a tre livelli di codifica in una volta, e ti dice quanti caratteri sono andati persi.
Come evitarlo
- Salva i file in UTF-8 – i CSV per Excel come CSV UTF-8 (delimitato da virgole), che aggiunge un BOM.
- Dichiara la codifica:
<meta charset="utf-8">in HTML,utf8mb4in MySQL e MariaDB. - Converti il testo una sola volta, al confine tra due sistemi.
- Durante l’importazione scegli tu la codifica invece di lasciarla indovinare al programma.
Domande frequenti
Come si pronuncia mojibake?
Più o meno “mo-gi-ba-ke”, pronunciando tutte e quattro le sillabe.
Il mio file è danneggiato o infetto?
No. Il mojibake è un problema di visualizzazione, non un virus, e di solito non comporta perdita di dati. Il file viene solo letto con la codifica sbagliata.
Che differenza c’è tra mojibake e �?
I caratteri strani come è contengono ancora i byte originali e si possono correggere. Il simbolo � indica che un programma non è riuscito a leggere un byte e l’ha sostituito: quel carattere è perso.
Il mio testo viene caricato su un server?
No. Mojibuster corregge il testo nel tuo browser. Non viene inviato né salvato.