Normalisation Unicode des noms de fichiers : doublons NAS
Si un dossier partagé affiche deux fichiers nommés Noémie - Budget T3.xlsx, dont l'un refuse de s'ouvrir, ou si la recherche Windows ne trouve pas un fichier pourtant bien visible, vous avez un problème de normalisation Unicode des noms de fichiers. Un collègue sur Mac a enregistré un nom contenant un accent, une cédille, un tréma, une syllabe coréenne ou un kana japonais sous forme décomposée (NFD). Windows, la plupart des serveurs Linux et beaucoup de services web attendent la forme composée (NFC). Les deux noms sont identiques à l'écran, mais ce sont des suites d'octets différentes : le lecteur les range donc côte à côte. La solution consiste à renommer une fois les fichiers concernés en NFC, puis à adopter quelques habitudes pour que cela ne se reproduise plus.
Pourquoi la normalisation Unicode des noms de fichiers crée des doublons sur un partage
Unicode autorise deux façons d'écrire le même caractère. é peut être un seul point de code (U+00E9, la forme composée ou NFC) ou un e ordinaire suivi d'un accent aigu combinant (U+0065 U+0301, la forme décomposée ou NFD). Le même principe s'applique au ç de François (c + cédille combinante), au ë de Zoë, au è de Lefèvre, au dakuten du japonais が, et à chaque syllabe coréenne, qui se décompose en ses jamo individuels (한글 devient ㅎㅏㄴㄱㅡㄹ dans les octets bruts).
macOS a historiquement stocké les noms de fichiers en NFD, et beaucoup d'applications Mac, Finder compris, les créent encore ainsi. Windows saisit et stocke les noms en NFC. Chaque système affiche correctement la forme de l'autre, ce qui explique précisément pourquoi personne ne remarque rien avant que les fichiers ne se retrouvent sur un volume partagé :
- Partages SMB et NAS (Synology, QNAP, serveur de fichiers Windows, partage Samba sous Linux). Le système de fichiers stocke les octets tels que le client les envoie. Un Mac enregistre la version NFD, un utilisateur Windows enregistre plus tard la version NFC, et voilà deux fichiers. Aucun des deux clients ne les considère comme le même nom.
- Google Drive, Dropbox, OneDrive. Les clients de synchronisation comparent les noms entre les machines. Selon le client et la version, un nom NFD venant d'un Mac et un nom NFC venant d'un PC peuvent être traités comme deux fichiers distincts, ce qui produit des fichiers « copie en conflit » ou un doublon silencieux. Une recherche dans l'interface web ne renvoie parfois qu'un seul des deux.
- Slack, Teams, e-mail. Une pièce jointe garde le nom que lui a donné la machine de l'expéditeur. Un utilisateur Windows qui télécharge
CV - Noémie Lefèvre.pdfenvoyé depuis un Mac se retrouve avec un nom NFD sur son disque. Le fichier s'ouvre sans problème, mais s'il tape ensuite le même nom pour le retrouver, la recherche Windows ne le trouve pas. - Scripts, outils de build et Git. Tout ce qui compare des chaînes octet par octet voit deux chemins différents. Git sur Mac peut signaler un fichier accentué comme supprimé puis ré-ajouté, ou ne pas trouver un fichier validé par un collègue sous Windows.
Le point essentiel : rien n'est corrompu. Chaque fichier est intact. Seuls les noms ne sont pas d'accord sur la façon d'épeler les mêmes lettres.
Comment savoir laquelle des deux copies est en NFD
Avant de renommer quoi que ce soit, confirmez le diagnostic. La différence est invisible à l'œil nu, il faut donc regarder les points de code.
Sous Windows (PowerShell)
- Ouvrez le dossier dans l'Explorateur de fichiers, cliquez dans la barre d'adresse, tapez
powershellet appuyez sur Entrée. - Exécutez :
Get-ChildItem | ForEach-Object { "$($_.Name) -> $([int[]][char[]]$_.Name -join ' ')" } - Comparez les deux doublons. La version NFC de
és'affiche comme233. La version NFD s'affiche comme101 769(uneplus un accent combinant). Pourç, vous verrez231en NFC contre99 807en NFD. Les syllabes coréennes en NFC apparaissent comme un seul nombre entre 44032 et 55203 ; en NFD, comme des séries de nombres entre 4352 et 4607.
Sur Mac (Terminal)
- Ouvrez le Terminal et faites
cddans le dossier (tapezcd, puis glissez le dossier depuis le Finder dans la fenêtre). - Exécutez :
python3 -c "import os,unicodedata as u; [print(n, 'NFD' if n!=u.normalize('NFC',n) else 'NFC') for n in os.listdir('.')]" - Chaque nom marqué
NFDsera traité par Windows et Linux comme un fichier différent de son jumeau NFC.
Vérification rapide sans terminal
Copiez le nom du fichier depuis le panneau Propriétés (Windows) ou Lire les informations (Mac) et collez-le dans le convertisseur de texte de l'application web FilenameFixer. Si le texte converti diffère de ce que vous avez collé, le nom était en NFD. La conversion se fait dans votre navigateur ; rien n'est envoyé à un serveur.
Corriger les fichiers que vous avez déjà
Décidez d'abord quelle copie est la bonne. Ouvrez les deux, vérifiez les dates de modification, et gardez le fichier le plus récent ou le plus complet. Puis passez le nom conservé en NFC.
Option 1 : retaper le nom sous Windows
Faites un clic droit sur le fichier, choisissez Renommer, effacez tout le nom et retapez-le au clavier. Windows produit du NFC à la saisie, donc un nom fraîchement tapé est toujours dans la forme attendue. C'est parfait pour un ou deux fichiers et ne demande aucun outil. En revanche, cela ne fonctionne pas si vous recollez l'ancien nom, car le collage conserve les octets NFD.
Option 2 : renommer par lot sur le Mac avant que les fichiers n'atteignent le partage
Si les fichiers viennent d'un Mac, corrigez-les à la source. Ouvrez l'application web FilenameFixer, glissez les fichiers ou un dossier entier sur la page, puis téléchargez-les ou enregistrez-les avec leurs noms convertis en NFC. C'est gratuit, cela traite des lots, et comme tout s'exécute localement dans le navigateur, les fichiers eux-mêmes ne quittent pas votre ordinateur. C'est la voie la plus pratique quand un graphiste ou un traducteur s'apprête à déposer cinquante éléments aux noms accentués ou coréens dans un dossier partagé.
Option 3 : ligne de commande sur un NAS ou serveur Linux
Si vous avez un accès shell au NAS ou au serveur Samba, convmv normalise les noms sur place :
convmv -f utf8 -t utf8 --nfc -r /volume1/partage/projet
Lancez-le d'abord sans --notest pour voir ce qu'il changerait, puis ajoutez --notest pour appliquer. Là où convmv n'est pas installé, unicodedata.normalize('NFC', nom) en Python dans une courte boucle os.rename fait le même travail.
Option 4 : PowerShell pour tout un dossier Windows
Get-ChildItem -Recurse | Where-Object { $_.Name -ne $_.Name.Normalize('FormC') } |
ForEach-Object { Rename-Item $_.FullName $_.Name.Normalize('FormC') }
Si le jumeau NFC existe déjà, Rename-Item échoue pour ce fichier, ce qui constitue un garde-fou utile : vous êtes obligé de fusionner les deux copies délibérément au lieu d'en écraser une.
Archives ZIP partagées par Slack ou e-mail
Quand les doublons arrivent dans un ZIP compressé par un utilisateur Mac, la décompression sous Windows reproduit le problème dans chaque dossier extrait. Plutôt que de renommer après extraction, vous pouvez passer l'archive dans l'outil de restauration des noms dans un ZIP (archives jusqu'à 200 Mo), qui réécrit les entrées en NFC et vous rend un ZIP qui s'extrait proprement.
Éviter la prochaine vague de doublons
Le renommage est un nettoyage ponctuel. Ces habitudes gardent ensuite le partage propre.
- Normaliser à l'envoi. Si votre équipe travaille surtout dans Google Drive, Slack ou une GED en ligne, les utilisateurs Mac peuvent installer l'extension Chrome FilenameFixer. Elle convertit automatiquement les noms de fichiers en NFC à chaque envoi de fichier via un site web, de sorte que le nom NFD n'atteint jamais le service.
- Activer
core.precomposeUnicodedans Git sur chaque Mac. Exécutezgit config --global core.precomposeUnicode true. Git convertit alors les chemins NFD en NFC avant de les stocker, ce qui met fin aux suppressions et ré-ajouts fantômes entre contributeurs Mac et Windows. - Désigner une seule personne pour créer les dossiers partagés et les modèles. Les noms de dossiers sont copiés bien plus souvent que les noms de fichiers. Si la racine du projet est
Évaluation 2026en NFD, chaque sous-dossier créé par un utilisateur Mac hérite du problème. Créer l'arborescence depuis une machine Windows, ou la normaliser une fois pour toutes, élimine une bonne part des futurs doublons. - Préférer l'ASCII pur dans les chemins partagés durables. Ce n'est pas toujours acceptable, surtout pour les équipes coréennes ou japonaises, et personne ne devrait avoir à écrire son propre nom sans accents. Mais pour des identifiants internes comme
2026-T3-budgetplutôt queBudget été 2026, supprimer les diacritiques ne coûte rien et évite entièrement le problème. - Reconnaître le symptôme, pas seulement la cause. « La recherche ne le trouve pas », « la synchro dit copie en conflit », « deux fichiers identiques dont un fait 0 octet » : c'est le même bug. Quand un collègue signale l'un de ces cas, vérifiez les points de code avant que quelqu'un ne commence à supprimer des fichiers.
Rien de tout cela n'exige d'acheter un logiciel. Retaper les noms, PowerShell, convmv et le réglage Git sont intégrés ou gratuits. FilenameFixer prend tout son sens quand le volume est important, quand les fichiers n'ont pas encore quitté le Mac, ou quand vous voulez que la conversion se fasse discrètement au moment de l'envoi plutôt que d'être une chose de plus à ne pas oublier.