Guide

Il CSV mostra caratteri rotti come è o ? invece di è: causa e soluzione

Esporti un elenco clienti, lo apri altrove e nomi come Nicolò compaiono come Nicolò o Nicol?. I dati non sono danneggiati. Il programma ha semplicemente letto i byte con una codifica dei caratteri diversa da quella usata per scriverli.

Aggiornato:

La causa: due codifiche per le stesse lettere

Un file CSV è testo semplice senza alcuna indicazione su come siano codificati i caratteri. Oggi la maggior parte dei programmi scrive in UTF-8, dove lettere come è, ò o à occupano due byte. I vecchi programmi Windows e molte versioni di Excel usano Windows-1252, dove le stesse lettere occupano un byte.

Quando l’UTF-8 viene letto come Windows-1252, ogni carattere speciale diventa due simboli strani, per esempio è al posto di è. Quando il Windows-1252 viene letto come UTF-8, quel singolo byte non è valido e compare di solito come punto interrogativo o simbolo di sostituzione.

Situazioni tipiche

Un negozio online, un CRM o un modulo web esporta in UTF-8, e con un doppio clic il file si apre in Excel con gli accenti rovinati. Succede perché molte versioni di Excel riconoscono l’UTF-8 solo se il file inizia con un contrassegno invisibile chiamato byte order mark.

Capita anche il contrario: un elenco salvato da Excel come CSV classico viene importato in uno strumento per newsletter o in uno script e mostra punti interrogativi, perché quel programma si aspetta l’UTF-8.

Un problema collegato è il separatore. Nei paesi che usano la virgola come separatore decimale, come l’Italia, Excel si aspetta il punto e virgola tra le colonne, quindi un file separato da virgole può finire tutto in un’unica colonna.

Aprire correttamente un file UTF-8 in Excel

Invece di fare doppio clic, importa il file. In questo modo Excel chiede codifica e separatore invece di indovinarli.

  1. Apri una cartella di lavoro vuota in Excel.
  2. Scegli Dati, poi Da testo/CSV, e seleziona il file.
  3. Imposta Origine file su 65001: Unicode (UTF-8) e controlla l’anteprima.
  4. Scegli il delimitatore corretto se le colonne non sono ancora separate, poi carica i dati.
  5. Quando salvi, usa CSV UTF-8 in modo che il programma successivo legga bene il file.

Convertire in UTF-8 un vecchio CSV di Excel

Se un file proveniente da Excel mostra punti interrogativi in un altro programma, convertilo una volta. Il convertitore di dati prova prima l’UTF-8 e ripiega su Windows-1252 quando i byte non sono UTF-8 valido, così gli accenti vengono letti correttamente. Poi scrive un UTF-8 pulito come CSV, JSON o altro formato e riconosce da solo punto e virgola, virgola e tabulazione come separatori.

Convertire più volte lo stesso file nella direzione sbagliata può rovinare il testo in modo permanente, per esempio quando Nicolò viene salvato di nuovo come UTF-8. Parti sempre dall’esportazione originale.

Verifica che non sia cambiato nulla

Dopo una conversione conviene controllare che sia cambiata solo la codifica e non il contenuto. Confronta i due file CSV tramite una colonna chiave come il codice cliente: lo strumento elenca celle modificate, righe nuove e righe mancanti, così un’importazione difettosa salta all’occhio prima di usare l’elenco.

Fallo subito

Altre guide