Skip to content

Convertitore di Codifica e Riparazione Mojibake

Incolla il testo illeggibile e riottieni l'originale. Ogni catena di codifica plausibile — UTF-8, GBK, Big5, Shift_JIS, EUC-KR, Windows-1252 — viene provata e ordinata, con la catena esatta in chiaro. Gratis e tutto in locale.

Niente tracciamento Funziona nel browser Gratuito
Tutto viene decodificato localmente nel tuo browser — il testo che incolli non lascia mai questo dispositivo.

Recupera il testo illeggibile

Incolla il testo illeggibile. Viene provata ogni catena di codifica plausibile e i risultati vengono ordinati — non devi sapere quale codifica ha causato il problema.

Prova questi

Originali più probabili

4 candidati
  1. 测试

    Esatto

    UTF-8 → GBK

  2. 娴嬭瘯

    Esatto

    Windows-1252 / Latin-1 → UTF-8

  3. 测试

    Esatto

    Windows-1252 / Latin-1 → GBK

  4. 测试

    Esatto

    Windows-1251 → GBK

Converti e ispeziona le codifiche

Guarda lo stesso testo come byte in tutte le codifiche comuni in una volta sola — utile quando devi sapere esattamente che cosa memorizzerà il tuo database o il tuo protocollo.

Codifica Byte Esadecimale
UTF-8 6 E4 B8 AD E6 96 87
GBK 4 D6 D0 CE C4
GB18030 4 D6 D0 CE C4
Big5 4 A4 A4 A4 E5
Shift_JIS 4 92 86 95 B6
EUC-KR 4 F1 E9 D9 FE

Ogni catena di codifica mostrata in questa pagina è prodotta dallo stesso motore che la pagina esegue, e la verifica di andata e ritorno dietro il badge Esatto è asserita nella suite di test unitari su sequenze di byte note. — Go Tools Team · Sep 8, 2026

Realizzato e verificato dal team di ingegneria di Go Tools.

Risposte rapide

Quale codifica trasforma 测试 in 娴嬭瘯?

UTF-8 → GBK Byte UTF-8 letti come GBK. I sei byte UTF-8 (E6 B5 8B E8 AF 95) vengono riraggruppati in tre caratteri GBK.

Che cosa trasforma 测试 in 测试?

UTF-8 → Windows-1252 Gli stessi byte UTF-8 letti come Windows-1252. Poiché quella codifica è a byte singolo, ciascuno dei sei byte diventa un carattere a sé.

Un testo che contiene � si può recuperare?

Non recuperabile No. Quei byte sono stati scartati al momento della decodifica. Recupera quello che puoi dal testo circostante e per il resto torna alla sorgente.

Quanti byte occupa un carattere cinese?

3 byte contro 2 Tre in UTF-8, due in GBK e Big5. Quella differenza è una causa frequente di troncamento quando una colonna è dimensionata in byte anziché in caratteri.

Che cos'è il mojibake?

Il mojibake è ciò che ottieni quando un testo viene scritto con una codifica di caratteri e letto con un'altra. I byte sono intatti; sbagliata è solo l'interpretazione. Questa distinzione è l'intera ragione per cui il recupero è possibile: se riesci a capire quale codifica ha scritto i byte e quale li ha letti male, puoi eseguire l'errore al contrario e riavere il testo originale.

La parola è giapponese — 文字化け, all'incirca «trasformazione dei caratteri» — ed è diventata il termine corrente anche in inglese perché il problema era endemico nell'informatica giapponese molto prima di Unicode. Il testo cinese, giapponese e coreano ne soffre assai più di quello a scrittura latina, per una ragione strutturale: quelle lingue hanno bisogno di codifiche multibyte, e le codifiche multibyte non sono d'accordo tra loro su come raggruppare i byte. Una stringa a scrittura latina è di solito puro ASCII, e sull'ASCII ogni codifica concorda.

Il recupero fallisce in una sola situazione. Quando un decoder incontra byte privi di significato nella sua codifica, non li conserva: li sostituisce con U+FFFD e li butta via. Quei caratteri sono persi in modo permanente. Tutto il resto è reversibile.

// The mistake, in three lines of JavaScript
const bytes = new TextEncoder().encode('测试');   // UTF-8: E6 B5 8B E8 AF 95
new TextDecoder('gbk').decode(bytes);            // '娴嬭瘯'  ← mojibake
new TextDecoder('windows-1252').decode(bytes);   // '测试'  ← same bytes, other mistake

Che cosa fa questo strumento

Non serve conoscere la codifica

Incolla il testo illeggibile e lo strumento enumera le catene al posto tuo. Viene provata ogni combinazione fra scritto-come e letto-come tra UTF-8, GBK, GB18030, Big5, Shift_JIS, EUC-KR, Windows-1252 e Windows-1251.

I risultati Esatti sono verificati, non indovinati

Un candidato viene marcato Esatto solo quando ripercorrerlo lungo la stessa catena riproduce il tuo input carattere per carattere. È un controllo deterministico: una semplice classifica di ipotesi non ti direbbe di quali risultati puoi fidarti.

La catena è mostrata, non nascosta

Ogni candidato nomina la codifica che ha scritto i byte e quella che li ha letti male. È ciò che ti serve per correggere la sorgente, invece di riparare le stesse stringhe di nuovo la settimana prossima.

Onesto sul testo irrecuperabile

Se l'input contiene già caratteri di sostituzione, lo strumento lo dice chiaramente e marca ogni candidato come parziale. L'informazione distrutta al momento della decodifica non torna indietro, e fingere il contrario ti fa buttare via un pomeriggio.

Vista dei byte in tutte le codifiche insieme

Guarda qualsiasi testo come byte esadecimali in tutte le codifiche supportate affiancate, e decodifica esadecimale grezzo nella direzione opposta. Utile per dimensionare colonne, leggere catture di pacchetti e controllare il contenuto dei BLOB.

Niente esce dal tuo browser

La decodifica usa il TextDecoder del browser stesso. Non c'è upload, non c'è archiviazione e non c'è riscrittura dell'URL — e conta, perché il testo illeggibile arriva di solito dritto dalla produzione.

Esempi svolti

UTF-8 letto come GBK — il caso classico

娴嬭瘯
测试

I due caratteri cinesi erano stati salvati correttamente in UTF-8 (byte E6 B5 8B E8 AF 95), poi un programma ha letto quei sei byte come GBK. GBK raggruppa i byte a due a due, quindi ne ha prodotti tre caratteri invece di due. È quello che ottieni quando un file UTF-8 viene aperto da un'applicazione Windows legacy, oppure quando il charset della connessione al database è impostato su gbk mentre i dati sono UTF-8.

UTF-8 letto come Windows-1252 — la variante occidentale

测试
测试

Stessi byte, errore diverso. Windows-1252 è a byte singolo, quindi ciascuno dei sei byte UTF-8 è diventato un carattere a sé. Le lingue a scrittura latina incappano di continuo in questa variante: café diventa café, naïve diventa naïve. I segnali rivelatori sono Ã, Â, â e strani segni di punteggiatura che compaiono a coppie.

Byte che hai già in esadecimale

B2 E2 CA D4
测试

A volte non stai guardando testo illeggibile, ma un dump esadecimale preso da una cattura di pacchetti o da una colonna BLOB. Incolla l'esadecimale nella seconda sezione e scegli la codifica. B2 E2 CA D4 è 测试 in GBK — gli stessi due caratteri occupano sei byte in UTF-8 (E6 B5 8B E8 AF 95) e in Windows-1252 non sono rappresentabili affatto.

Testo che non si può recuperare

鏁版嵁搴�
(solo parziale)

数据库 era stato scritto in UTF-8 e letto come GBK, ma l'ultima coppia di byte non aveva significato in GBK, quindi il decoder l'ha sostituita con U+FFFD. Quel byte è perduto. Lo strumento lo segnala invece di tirare a indovinare in silenzio: puoi comunque recuperare 数据 dalla parte iniziale della stringa, ma l'ultimo carattere è irrecuperabile e devi tornare ai dati di origine.

Come si usa

  1. 1

    Incolla il testo illeggibile

    Buttalo dentro così com'è: non serve identificare prima la codifica. Basta un frammento breve, una dozzina di caratteri di solito inchioda la catena.

  2. 2

    Leggi il primo candidato e il suo badge

    Esatto significa che la catena ripercorsa a ritroso riproduce esattamente il tuo input. Parziale significa di no, quindi tratta il risultato come una pista.

  3. 3

    Controlla la catena di codifica

    Ogni candidato mostra con quale codifica il testo era davvero scritto e quale l'ha letto male. È questo a dirti che cosa correggere a monte, non solo che cosa diceva il testo.

  4. 4

    Ispeziona i byte, se ti serve

    La seconda sezione mostra qualsiasi testo come byte in tutte le codifiche comuni e decodifica esadecimale grezzo nella direzione opposta. Usala per dimensionare colonne o verificare trame di protocollo.

Mosse che peggiorano la situazione

Convertire un testo che non era affatto rotto

Se una stringa si visualizza correttamente e tu la converti comunque, crei proprio il mojibake che volevi evitare. Controlla prima la visualizzazione, e tieni presente che un font mancante si vede come quadratini (□□□) mentre un problema di codifica si vede come caratteri sbagliati.

✗ Errato
iconv -f UTF-8 -t GBK correct.txt > broken.txt
✓ Corretto
# Conferma prima la codifica attuale
file -I correct.txt   # charset=utf-8 → niente da convertire

Dichiarare un charset che i dati non hanno

Cambiare il charset dichiarato di una colonna MySQL non ricodifica i byte che contiene. Dichiarare dati latin1 come utf8 fa sì che il server restituisca byte che non sono UTF-8 valido, e il driver li sostituisce con U+FFFD — il che li distrugge.

✗ Errato
ALTER TABLE t MODIFY c VARCHAR(255) CHARACTER SET utf8mb4;
✓ Corretto
-- Passa da un tipo binario, così i byte vengono preservati e non reinterpretati
ALTER TABLE t MODIFY c VARBINARY(255);
ALTER TABLE t MODIFY c VARCHAR(255) CHARACTER SET utf8mb4;

Fidarsi di un recupero parziale

Un candidato marcato Parziale non ha superato l'andata e ritorno. È una pista da seguire, non una risposta da reincollare nel tuo database. Se non torna nulla come Esatto, l'input ha probabilmente già perso informazione: torna ai byte di origine.

✗ Errato
// Prendi il primo candidato qualunque cosa dica il badge
db.update(row.id, candidates[0].text);
✓ Corretto
// Riscrivi solo ciò che supera l'andata e ritorno
if (candidates[0].lossless) db.update(row.id, candidates[0].text);

Dare per scontato che le abitudini di Python 2 valgano ancora

Chiamare encode su qualcosa che è già bytes, o decode su qualcosa che è già una stringa, in Python 3 solleva un'eccezione invece di fare in silenzio un giro attraverso l'ASCII. Decodifica i byte una volta sola, al confine, e da lì in poi tieni il testo come testo.

✗ Errato
text = raw.decode('utf-8').encode('gbk').decode('utf-8')
✓ Corretto
# Decodifica una volta sola al confine, con la codifica che il file usa davvero
with open(path, encoding='gbk') as f:
    text = f.read()

Quando ti serve

Una migrazione di database ha prodotto spazzatura
Le vecchie tabelle MySQL dichiarate latin1 che in realtà contengono byte UTF-8 sono di gran lunga la sorgente più comune. Incolla qui una riga illeggibile per confermare la catena reale prima di scrivere la ALTER TABLE: eseguire la conversione nella direzione sbagliata trasforma un problema recuperabile in uno permanente.
Un CSV aperto in Excel mostra caratteri assurdi
Excel su Windows presume ancora la code page di sistema per i file CSV privi di BOM, quindi le esportazioni UTF-8 escono come mojibake. Conferma qui la catena, poi riesporta con il BOM oppure importa dalla procedura guidata di testo indicando la codifica in modo esplicito.
File di log di un servizio legacy
Le applicazioni sviluppate per GBK o Shift_JIS scrivono i log in quelle codifiche, e gli aggregatori di log moderni leggono tutto come UTF-8. Incolla una riga per recuperarla — e visto che niente viene caricato, puoi farlo con i log di produzione.
Nomi di file rovinati da un archivio ZIP
Il formato ZIP non ha un campo per la codifica, quindi gli archivi creati su Windows cinese o giapponese portano nomi di file in GBK o Shift_JIS che gli strumenti Unix leggono come UTF-8. Recupera qui i nomi reali prima di rinominare qualcosa.
Dimensionare una colonna di database
La vista dei byte mostra lo stesso testo in tutte le codifiche in una volta sola. Un carattere cinese occupa 3 byte in UTF-8 ma 2 in GBK, ed è esattamente il tipo di differenza che trasforma un VARCHAR(50) in un bug di troncamento.

Come nasce il mojibake

I byte sopravvivono, il significato no
La codifica mappa i caratteri in byte, la decodifica riporta i byte a caratteri. Il mojibake è una decodifica fatta con la mappa sbagliata. I byte non sono mai stati danneggiati, ed è per questo che eseguire al contrario la decodifica sbagliata recupera l'originale in modo esatto — a patto che quella decodifica sbagliata non abbia scartato nulla.
Perché il testo CJK ne soffre di più
L'ASCII occupa 0x00–0x7F e ogni codifica comune concorda su quella fascia, quindi il testo inglese passa indenne. Cinese, giapponese e coreano hanno bisogno di sequenze multibyte, e le codifiche non concordano su come raggrupparle. UTF-8 usa tre byte per carattere cinese, GBK ne usa due. Dai byte UTF-8 in pasto a un decoder GBK e il raggruppamento si sposta, producendo un numero diverso di caratteri diversi.
Il test di andata e ritorno
Per ogni catena candidata lo strumento ricodifica il testo recuperato con la prima codifica e lo ridecodifica con la seconda. Se questo riproduce esattamente l'input, la catena spiega ogni singolo carattere e il candidato viene marcato Esatto. I candidati che non superano il test vengono comunque mostrati, perché un recupero parziale spesso identifica il testo anche quando non riesce a riprodurlo.
Da dove arrivano le tabelle di codifica
Le tabelle le fornisce il TextDecoder del browser. Codificare nella direzione opposta è più scomodo, perché TextEncoder supporta solo UTF-8: lo strumento costruisce quindi una mappa inversa percorrendo lo spazio dei byte e chiedendo al decoder che cosa significa ogni sequenza. La corrispondenza resta perciò sempre coerente con il comportamento del browser stesso, e nessuna tabella di lookup viene scaricata sul tuo dispositivo.
L'euristica di ordinamento, e i suoi limiti
Oltre al test di andata e ritorno, i candidati ricevono un punteggio in base a quanta parte del testo è fatta di caratteri cinesi comuni (quelli il cui byte iniziale GBK cade fra 0xB0 e 0xF7), meno le penalità per caratteri di sostituzione, katakana a mezza larghezza e caratteri di controllo. I katakana a mezza larghezza sono un indizio forte di Shift_JIS, perché il testo giapponese normale non li usa quasi mai. Questa è un'euristica: rompe le parità, non stabilisce la verità.

Come evitare che si ripeta

Correggi la sorgente, non solo la stringa
La catena di codifica mostrata sotto ogni candidato ti dice quale componente è configurato male. Riparare il testo senza correggere il charset della connessione, il lettore di file o le opzioni di esportazione significa rifare tutto domani con dati freschi.
Conferma la direzione prima di convertire un intero file
Fai passare prima una riga rappresentativa da questa pagina. Convertire nella direzione sbagliata può produrre caratteri di sostituzione e, a differenza dell'errore originale, quel passaggio non è reversibile.
Imposta la codifica in modo esplicito ovunque
Charset della connessione al database, Content-Type HTTP, chiamate di apertura dei file, esportazioni CSV. Ogni punto che ricade sulla «codifica di sistema» è un punto in cui lo stesso bug ritorna appena il codice si sposta su un'altra macchina.
In MySQL preferisci utf8mb4 a utf8
L'utf8 di MySQL memorizza al massimo tre byte per carattere, quindi le emoji e alcuni caratteri cinesi più rari vengono troncati in silenzio. utf8mb4 è UTF-8 vero. Questo è un guasto diverso dal mojibake e lo strumento di recupero non può farci niente, perché quei byte sono davvero spariti.
Conserva i byte originali finché la correzione non è verificata
Fai una copia prima di convertire qualsiasi cosa. Finché i byte originali esistono, ogni decodifica sbagliata è reversibile; una volta sovrascritti con caratteri di sostituzione, nessuno strumento di questa pagina né di altrove può riportarli indietro.

Domande frequenti

Come recupero i caratteri cinesi che appaiono come spazzatura?
Incolla il testo illeggibile nel riquadro in cima a questa pagina. Lo strumento prova ogni catena di codifica plausibile e ordina i risultati, quindi non devi identificare tu la codifica. Nella stragrande maggioranza dei casi la risposta è testo UTF-8 letto come GBK (vedrai caratteri come 娴嬭瘯) oppure testo UTF-8 letto come Windows-1252 (vedrai 测试). Entrambi vengono recuperati in modo esatto.
Che cosa verifica davvero il badge Esatto?
Esegue il recupero al contrario. Il testo recuperato viene ricodificato con la prima codifica della catena e quei byte vengono ridecodificati con la seconda. Se il risultato riproduce il tuo input carattere per carattere, la catena spiega per intero ciò che hai incollato e il badge dice Esatto. È un controllo deterministico di andata e ritorno, non un punteggio di somiglianza: per questo un risultato Esatto è affidabile in un modo in cui un'ipotesi ordinata per punteggio non lo è.
Perché certi testi illeggibili non si recuperano mai?
Perché il danno è avvenuto prima che tu li vedessi. Quando un decoder incontra una sequenza di byte priva di significato nella sua codifica, non conserva i byte: li sostituisce con U+FFFD (mostrato come �) e li scarta. È un passaggio con perdita e irreversibile. Se il tuo testo contiene �, quei caratteri specifici sono persi qualunque strumento tu usi. Questa pagina te lo dice, invece di produrre un'ipotesi dall'aria sicura.
Qual è la differenza tra GBK, GB2312 e GB18030?
Sono tre generazioni della stessa famiglia, ciascuna soprainsieme della precedente. GB2312 (1980) copre 6.763 caratteri cinesi semplificati, abbastanza per il testo di tutti i giorni. GBK (1995) lo estende a circa 21.000 caratteri, forme tradizionali comprese. GB18030 (2000, obbligatorio in Cina) copre tutto Unicode. Per recuperare il mojibake la scelta giusta è quasi sempre GBK, perché il software che ha causato il problema era di norma scritto per GBK.
ISO-8859-1 e Windows-1252 sono la stessa cosa?
Non negli standard, ma sì in ogni browser. Il WHATWG Encoding Standard — quello che i browser implementano — tratta iso-8859-1 e latin1 come semplici etichette per windows-1252. I due differiscono solo nell'intervallo 0x80–0x9F, dove il vero ISO-8859-1 ha caratteri di controllo e Windows-1252 ha punteggiatura stampabile come la lineetta lunga e le virgolette curve. Dato che quei caratteri stampabili sono esattamente ciò che salta fuori nel mojibake, Windows-1252 è il più utile dei due e questo strumento lo elenca una volta sola sotto entrambi i nomi.
Il testo che incollo viene caricato da qualche parte?
No. Tutta la decodifica avviene nel tuo browser tramite il suo TextDecoder integrato, e niente viene inviato in rete, scritto su disco o aggiunto all'URL. Per questo strumento la cosa conta più del solito: il testo illeggibile arriva quasi sempre da un log di produzione, da un record cliente o da un dump di database, cioè esattamente il genere di dati che non dovresti incollare in uno strumento lato server.
Posso convertire un intero file e non solo un frammento?
Questa pagina gestisce il testo che incolli. Per interi file conviene la riga di comando: iconv -f GBK -t UTF-8 input.txt > output.txt su macOS o Linux, oppure Get-Content -Encoding Default in.txt | Set-Content -Encoding UTF8 out.txt in PowerShell. Incolla prima qui una riga rappresentativa per capire quali codifiche indicare nel comando: sbagliare direzione su un intero file è il modo in cui un problema da una riga diventa un problema da mille righe.
Perché lo strumento mostra più candidati invece di una sola risposta?
Perché più di una catena può produrre testo leggibile, e lo strumento non te lo nasconde. I candidati sono ordinati mettendo prima le catene coerenti con sé stesse (Esatto), poi seguendo un'euristica di leggibilità che premia i caratteri cinesi comuni e penalizza i caratteri di sostituzione, i katakana a mezza larghezza e i caratteri di controllo. L'euristica serve a rompere la parità, non a stabilire la verità. Quando due candidati sembrano entrambi plausibili, la catena di codifica mostrata sotto ciascuno ti dice quale è coerente con la reale provenienza dei tuoi dati.

Strumenti correlati

Vedi tutti gli strumenti →