utf-8 errorNel corso del mio lavoro è capitato alcune volte di dover “rinnovare” dei server di dominio,

nello svolgere questo tipo di operazione normalmente è necessario migrare i file contenuti nelle varie cartelle condivise dal vecchio al nuovo server, in alcuni casi per un problema di codifica dei caratteri (locales) succede un macello,

tutti i nomi dei file contenenti lettere accentate e simboli particolari apparentemente si corrompono;
se andiamo a verificare dal terminale saltano fuori degli strani simboli o punti interrogativi al posto di queste lettere:

questo comporta anche l’inaccessibilità, per quei pc che accedono alle condivisioni in rete, di questi file e cartelle “corrotti”,

in realtà questi file non si sono corrotti, è solo un problema di mappatura dei caratteri, il nome è scritto correttamente ma viene interpretato in maniera errata:

nei vecchi server SAMBA, alcuni “tecnici” (per così dire) per ovviare ai problemi di compatibilità in maniera sbrigativa, spesso impostavano la locale di Windows (ISO-8859-15) a livello di sistema,

io sono solito mantenere le mie macchine tutte standard in UTF-8.

Trasferendo i file dai vecchi dischi con file scritti in ISO-8859-15, portiamo dentro dei nomi che non sono del tutto compatibili con la nostra codifica dei caratteri.

per risolvere esiste un tool:

convmv

per installarlo su server debian e derivate:

apt-get install convmv

su macchine openSUSE:

zypper in convmv

adesso che abbiamo il nostro tool, non ci rimane che usarlo:

convmv -r -f ISO-8859-15 -t it_IT.UTF-8 /percorso/file/problematici/

questo comando analizza in maniera ricorsiva tutti i file e le sottocartelle a partire dal path specificato, cercando file con codifica ISO-8859-15 e convertendoli in it_IT.UTF-8;

lanciandolo ci mostrerà tutti i file trovati con codifica errata e come li correggerà, in questa fase non effettua nessuna modifica, ci mostra solo i cambiamenti da apportare.

Se ciò che vediamo ci soddisfa, non rimane che applicare il tutto aggiungendo il parametro

--notest
convmv --notest -r -f ISO-8859-15 -t it_IT.UTF-8 /percorso/file/problematici/

ovviamente, conoscere in anticipo la codifica di partenza aiuta parecchio a risolvere rapidamente il problema,

se non la conosciamo bisogna andare un po’ per tentativi, il comando

convmv --list

ci mostrerà tutte le possibili codifiche e provare ad usarne alcune come codifica di partenza

se i file trovati non corrispondono alla codifica selezionata il tool darà errore quindi procediamo a provare con un’altra.