Le mercredi 23 novembre 2022 à 08:50 +0100, Jean-Philippe Georget a écrit :
> Bonjour,
> 
> Tout d'abord, je remercie tous les participants à ce fil de discussion qui 
> m'ont permis de trouver une solution seulement aujourd'hui et après une bonne 
> petite heure de recherche et de tests (car, oui, je n'ai pas trouvé tout de 
> suite la solution ;-)
> 
> 
> *Le problème*
> 
> Des caractères accentués de certains noms de fichiers sont codés sur deux 
> caractères malgré le fait que ce soient des caractères Unicode.
> Par exemple "é" est codé avec "e" et un accent aigu, "à" est codé avec "a" et 
> un accent grave.
> 
> Cela cause des bizarreries quand on veut les renommer (il faut effacer deux 
> caractères au lieu d'un, le curseur ne se positionne pas au bon endroit) ou 
> les rechercher (on ne les retrouve pas, par exemple r?f.pdf ne permet pas de 
> retrouver réf.pdf alors que r??f.pdf permet le retrouver).
> 
> 
> *Une solution*
> 
> Convertir le nom du fichier de utf-8 à utf-8 en respectant la norme NFC
> 
> convmv -f utf-8 -t utf-8 --nfc --notest filename
> 
> 
> On peut aussi traiter récursivement une hiérarchie de dossiers/fichiers en 
> ajoutant un "-r".
> 
> convmv -r -f utf8 -t utf8 --nfc --notest path/
> 
> 
> 
> *Une explication*
> 
> Les noms de fichier avec lesquels j'ai des problèmes proviennent 
> d'ordinateurs fonctionnant sous MacOs.
> 
> Effectivement, le système de fichiers HFS (ou HFS+) de MacOs utilise une 
> forme d'Unicode spécifique (no comment :-]), la forme NFD (NFC normalization 
> form D). Or Linux utilise la forme NFC (normalization form C).
> 
> https://fr.wikipedia.org/wiki/Normalisation_Unicode
> - Norme NFD (MacOs) : les caractères diacritiques sont codés sous une forme 
> décomposée ("é" est en fait "e" + l'accent aigu)
> - Norme NFC (Linux) : les caractères diacritiques sont codés sous une forme 
> composée ("é" est un seul caractère unicode)
> 
> 
> Quand on enregistre sur un ordinateur Linux un fichier créé sur MacOs, il n'y 
> a pas de conversion entre les normes. Le nom de fichier codé en NFD reste en 
> NFD, il n'est pas transformé en NFC. En particulier, deux noms de fichiers 
> identiques à l'affichage peuvent donc cohabiter dans le même dossier alors 
> que ces noms sont différents puisque codés avec des caractères différents.
> 
> Intérêt des deux normes (pour ce que j'ai compris ;-)
> NFC : un code par caractère affiché, pratique pour identifier de manière 
> unique des lettres, des mots, etc.
> 
> NFD : pratique pour faire des recherches/comparaisons sans tenir compte des 
> caractères diacritiques (accents, trémas, etc.). Une recherche sur le mot 
> "education" (sans accent) permet aussi de retrouver "éducation".
> 
> 
> Linus Torvalds déplore l'utilisation de la NFD pour le système de fichier HFS+
> https://www.cio.com/article/251059/linus-torvalds-apples-hfs-is-probably-the-worst-file-system-ever.html
> 
> 
> Et moi aussi, je le déplore ! ;-)
> Jean-Philippe 
> 
En tout cas, ton explication  claire et détaillée t'honore.... Merci.

Répondre à