Caratteri strani nel file CSV? Perché succede e come risolvere
Caratteri strani come «Ã©» o «Ð¡ÑƒÐ¼Ð°» significano che il CSV è stato salvato con una codifica del testo e aperto come se ne avesse un’altra: le lettere sono ancora nel file, vengono solo decodificate male. Aprilo con la codifica giusta (il Visualizzatore CSV la rileva in automatico) e salva una copia in UTF-8. I punti interrogativi («????») sono un’altra storia: di solito significano che le lettere sono andate perse già quando il file è stato scritto.
Cos’è una codifica, in un minuto
Un file CSV è testo semplice, e sul disco il testo è solo una sequenza di numeri (byte). Una codifica è la tabella che dice quale numero corrisponde a quale lettera. Per le lettere inglesi di base e le cifre quasi tutte le codifiche sono d’accordo, ed è per questo che i numeri nell’export della banca appaiono corretti mentre nomi e descrizioni diventano spazzatura.
Le tre che incontrerai negli export di gestionali di contabilità e banche:
- UTF-8: lo standard moderno. Può contenere tutti gli alfabeti in un unico file. Le lettere al di fuori dell’inglese di base occupano due o più byte ciascuna.
- Windows-1251: una vecchia codifica a byte singolo per il cirillico (ucraino, russo, bulgaro, serbo). Molti vecchi programmi di contabilità esportano ancora in questa codifica.
- Windows-1252: la vecchia codifica a byte singolo per le lingue dell’Europa occidentale: é, ü, ñ, ø, € e così via.
Di solito il file non dice quale codifica usa. Il programma che lo apre deve indovinarla, e se sbaglia ottieni il mojibake, il nome tecnico di questo testo storpiato.
Leggere la spazzatura: cosa ti dice ogni schema
Il tipo di spazzatura è un indizio su cosa è andato storto.
| Vedi | Ti aspettavi | Cosa è successo |
|---|---|---|
é, ü, € |
é, ü, € | File UTF-8 aperto come Windows-1252 |
Сума (tante Ð e Ñ) |
Сума | Cirillico UTF-8 aperto come Windows-1252 |
Ñóìà (lettere latine accentate) |
Сума | File Windows-1251 aperto come Windows-1252 |
Cafй |
Café | File Windows-1252 aperto come Windows-1251 |
� (rombo nero con ?) |
qualsiasi lettera | File con codifica legacy aperto come UTF-8 |
???? |
qualsiasi lettera | Lettere perse al salvataggio del file |
Coppie come «Ã» + qualcosa o «Ð»/«Ñ» + qualcosa sono l’impronta digitale di un file UTF-8 letto con una codifica legacy: in UTF-8 ogni lettera non inglese occupa due byte, e la vecchia tabella mostra ogni byte come un simbolo separato. È una buona notizia: non si è perso nulla, e aprire il file come UTF-8 risolve il problema.
I semplici punti interrogativi invece sono una cattiva notizia. Di solito compaiono quando un programma ha provato a salvare il testo in una codifica che non ha posto per quelle lettere (per esempio il cirillico in Windows-1252) e le ha sostituite tutte con ?. Le lettere originali non sono più nel file, e nessun visualizzatore può recuperarle. La soluzione è esportare di nuovo dal sistema di origine, scegliendo UTF-8 o la codifica regionale corretta, se la finestra di esportazione lo permette.
Il BOM: perché Excel sbaglia con l’UTF-8
Un file UTF-8 può iniziare con tre byte invisibili chiamati byte order mark (BOM). È un indizio che dice «questo file è in UTF-8».
Quando fai doppio clic su un CSV, Excel si affida molto a quell’indizio. Con il BOM di solito legge correttamente l’UTF-8; senza, spesso presume la codifica legacy del tuo computer, ed è esattamente così che un export UTF-8 perfettamente valido della banca diventa «Ð¡ÑƒÐ¼Ð°». Altri programmi fanno il contrario e mostrano il BOM come spazzatura, tipo , all’inizio dell’intestazione della prima colonna. Se lo vedi, il file è in UTF-8 e il BOM viene mostrato come testo.
Soluzione 1: aprilo con il rilevamento automatico
La soluzione più rapida è lasciare che qualcuno rilevi la codifica per te. Il Visualizzatore CSV di Opener prova prima l’UTF-8 e, se non va, ripiega su Windows-1251 o Windows-1252 in base al testo, così nomi e descrizioni appaiono correttamente senza procedure guidate di importazione. Rileva anche il separatore: virgola, punto e virgola, tabulazione o barra verticale.
Il file viene letto nel tuo browser e non viene caricato da nessuna parte, cosa che conta per buste paga, fatture ed estratti conto. Per sistemare il file da usare in altri programmi, usa il pulsante di esportazione: ottieni una copia pulita della tabella in UTF-8 (della vista corrente, quindi cancella prima l’eventuale ricerca se vuoi tutte le righe). Se il tuo problema è che tutto finisce in una sola colonna e non le lettere storpiate, vedi perché un CSV si apre in una sola colonna.
Soluzione 2: importalo in Excel con l’«Origine file» giusta
Non fare doppio clic sul file. Apri invece una cartella di lavoro vuota e usa l’importazione «Da testo/CSV» della scheda Dati. La finestra di anteprima ha un elenco Origine file in cui scegli la codifica:
- 65001: Unicode (UTF-8) per i file che mostrano
éoСума; - l’opzione cirillico (Windows), 1251, per i vecchi export in cirillico;
- l’opzione Europa occidentale (Windows), 1252, per i vecchi export dell’Europa occidentale.
Passa dall’una all’altra e guarda l’anteprima: appena i nomi appaiono corretti, hai trovato quella giusta. Poi carica i dati. Se devi inoltrare il file, salvalo da Excel con il tipo di file «CSV UTF-8» invece del semplice «CSV», che potrebbe usare di nuovo la codifica legacy.
Soluzione 3: Fogli Google, LibreOffice o un editor di testo
Fogli Google. Importare un CSV in Fogli Google (File → Importa) funziona bene con i file UTF-8, e la finestra di importazione ti permette di scegliere il separatore. Con i file in codifica legacy è una strada meno affidabile: se un export Windows-1251 o Windows-1252 mostra ancora lettere storpiate, convertilo in UTF-8 con uno degli altri metodi e importa quella copia.
LibreOffice Calc. Quando apri un CSV, LibreOffice mostra una finestra di importazione del testo con un elenco Set di caratteri. Scegli Unicode (UTF-8), cirillico (Windows-1251) o Europa occidentale (Windows-1252) e l’anteprima si aggiorna subito. È gratuito e funziona su Windows, macOS e Linux.
Un editor di testo. Editor come Blocco note su Windows, TextEdit su macOS o un editor di codice come VS Code ti permettono di scegliere la codifica al momento del salvataggio. Il problema: l’editor deve prima aprire il file con la codifica corretta. Se nell’editor il testo appare corretto, salvalo in UTF-8. Se lì appare già storpiato, salvando conserverai solo la spazzatura: riaprilo prima con la codifica giusta.
Domande frequenti
Posso sistemare i «????» nel mio CSV?
Di solito no. I punti interrogativi significano che i caratteri sono stati sostituiti quando il file è stato scritto, quindi le lettere originali non sono nel file. Esportalo di nuovo dal gestionale di contabilità o dalla banca, scegliendo UTF-8 se possibile.
Quale codifica devo usare quando salvo o esporto?
UTF-8. Contiene tutti gli alfabeti e ogni programma moderno la capisce. Se i colleghi aprono il file con un doppio clic in Excel, usa l’opzione «CSV UTF-8» di Excel, così il file inizia con un BOM.
Cambiare la codifica cambia i miei numeri?
No. Cifre, punti e virgole sono identici in UTF-8, Windows-1251 e Windows-1252, quindi importi e date non cambiano. Cambiano solo le lettere al di fuori dell’inglese di base.
È sicuro sistemare online un export della banca?
Solo se lo strumento non lo carica. Il Visualizzatore CSV decodifica ed esporta il file interamente nel tuo browser, quindi l’estratto conto non lascia mai il tuo dispositivo.