[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Gestion de caractères accentués différentes entre xterm, d'autres émulateurs de terminal, et Emacs (locales correctes)



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.


Reply to: