Soucis d’encodage dans les noms de fichiers
Soucis d’encodage dans les noms de fichiers
Une partition au format ext4 contient tout une arborescence de fichiers et de dossiers, mis en partage via un serveur sur le réseau, en tant qu’Intranet. Les systèmes d’exploitations qui ont créés et modifiés les fichiers ont été divers et variés avec les années, des différentes versions de Windows à différentes distributions de Linux, en passant par du MacOS X. Dans le cadre d’un projet de modernisation, nous montons la partition sur un autre serveur, nous le partageons en réseau via Samba... On me signale des fichiers manquants.
J’analyse le problème en investiguant directement sur le serveur, en utilisant un client qui monte ce partage.
Dans l’explorateur de documents de Gnome, Nautilus, qui affiche le partage Samba, certains dossiers n’apparaissent pas. En ligne de commande, sur la machine sur laquelle est monté le dossier, je peux me déplacer dans toute arborescence. Là encore, dans le terminal Terminator, je peux changer l’encodage de l’affichage.je peux demander à changer l’encodage de l’affichage et cela me donne des pistes, mais aucun encodage ne permet d’avoir les caractères comme il faut. Les caractères spéciaux font que Nautilus n’affichent pas les sous-dossiers.
Exemple de nom de fichier avec ces problèmes d’encodages
./2018 - F�vrier/
A2018-001_Soci�t�_G�n�rale.pdf
J’ai eu beau changer la configuration Samba pour que les caractères accentués apparaissent correctement, en définissant différents types d’encodage, en redémarrant le service, les clients, rien ne marche. Le seul résultat auquel j’arrive est de faire que les caractères accentués s’affichent avec un caractère bizarre et on peut alors descendre dans l’arborescence.
Le remontage de la partition avec différentes options pour définir l’encodage des fichiers ne changent rien
Le soucis n’est pas dans l’encodage du contenu du fichier mais dans l’encodage du nom de fichier en lui-même.
La partition source sur le serveur est au format Ext4, qui est agnostique vis à vis de l’encodage.
La solution
Il existe la commande convmv qui permet de changer l’encodage d’un nom de fichier
convmv -r -f iso-8859-1 -t utf8 . --notest
Par défaut, la commande montre ce que la conversion donnerait. L’option —notest permet de lancer la commande avec réécriture des noms directement. La commande est récursive, ce qui est pratique pour traiter une longue arborescence de dossiers et fichiers.
Conclusion
En changeant de façon récursive tous l’encodage de tous les noms de fichiers de l’arborescence, plus aucun soucis. (J’ai bien évidemment indiqué UTF-8 dans la configuration Samba pour être cohérent avec l’encodage des noms de fichiers). En espérant que ça puisse être utile à d’autres.