Nom de fichier Mac cassé sous Windows : NFD et NFC expliqués
Si un nom de fichier créé sur Mac apparaît mal sous Windows, le fichier lui-même n'est en général pas abîmé. « Hélène_facture.pdf » peut s'afficher avec un accent détaché à côté du e, un fichier coréen peut apparaître sous la forme « ㅈㅓㅇㅅㅏㄴㅅㅓ.xlsx » au lieu de « 정산서.xlsx », ou la recherche Windows peut ne pas trouver un fichier pourtant bien visible dans l'explorateur. La cause est presque toujours la même : le nom est enregistré dans une autre écriture Unicode (appelée NFD) que celle attendue par Windows (NFC). La solution consiste à réécrire le nom sous sa forme composée, en le retapant sous Windows, en exécutant une courte commande PowerShell, ou en passant les fichiers par un outil gratuit en ligne comme FilenameFixer.
Cet article explique ce qui se passe sans supposer que vous êtes développeur, puis présente les méthodes de correction, de la plus simple à la plus technique.
À quoi ressemble un nom de fichier Mac cassé sous Windows
Le problème ne touche que les noms qui contiennent des lettres pouvant s'écrire sous forme d'une lettre de base suivie d'un signe diacritique. Concrètement, cela concerne :
- les lettres latines accentuées : Hélène, Zoé, Müller, résumé, crème brûlée, garçon, français ;
- le coréen : chaque syllabe hangul est construite à partir de lettres séparées (jamo) ;
- le japonais : les kana avec dakuten ou handakuten, comme が, ぱ ou ど ;
- le vietnamien et d'autres langues qui empilent plusieurs signes diacritiques.
Un nom en ASCII simple, comme « rapport_final_v3.docx », ne pose jamais ce problème. C'est pour cette raison que beaucoup de personnes utilisent leurs fichiers pendant des années sans rien remarquer.
Voici les symptômes typiques côté Windows :
- Le nom s'affiche avec un espace visible ou un accent détaché, ou le coréen se découpe en lettres isolées.
- Le nom semble correct dans l'Explorateur de fichiers, mais la recherche ne donne aucun résultat.
- Deux fichiers portant exactement le même nom apparaissent dans le même dossier, et Windows ne signale rien. L'un a été créé sur le Mac, l'autre sous Windows.
- Un script, un outil de sauvegarde ou un client de synchronisation signale « fichier introuvable » alors que le fichier est bien présent.
- Un formulaire en ligne refuse l'envoi ou enregistre le nom avec une orthographe étrange.
Le phénomène inverse existe aussi. Un utilisateur Windows envoie « Zoé.jpg » à un utilisateur de Mac, et un script shell sur le Mac qui cherche l'orthographe Windows échoue. La cause est la même.
Pourquoi ça arrive : NFD et NFC expliqués simplement
Unicode est la norme qui permet aux ordinateurs d'écrire toutes les langues. Elle autorise certains caractères à s'écrire de deux façons différentes, qui se ressemblent à l'écran.
- Forme composée (NFC) : « é » est un seul caractère. C'est ce que produit la touche é d'un clavier Windows ou AZERTY, et c'est la forme qu'attendent la plupart des serveurs web, des bases de données et des systèmes de fichiers.
- Forme décomposée (NFD) : « é » devient deux caractères : un « e » simple suivi d'un « accent aigu combinant », dessiné par-dessus. Le « ç » devient un « c » suivi d'une cédille combinante (◌̧). Le même principe vaut pour le coréen, où « 한 » devient ㅎ + ㅏ + ㄴ, et pour le japonais, où « が » devient か suivi d'un signe dakuten séparé.
NFC et NFD sont simplement les noms techniques de « composée » et « décomposée ». Les lettres signifient Normalization Form C et Normalization Form D. Vous n'avez pas besoin de retenir ces termes.
Pendant de nombreuses années, macOS a enregistré tous les noms de fichiers sur le disque sous forme décomposée. Les Mac récents sont plus souples, mais beaucoup de logiciels macOS produisent encore des noms décomposés, y compris la commande « Compresser » du Finder qui crée les archives ZIP. Ainsi, quand un fichier quitte un Mac, par une archive ZIP, une clé USB, un courriel, un disque partagé ou un envoi sur un site web, son nom voyage souvent en NFD.
Windows ne convertit rien. Il considère les deux orthographes comme deux suites de caractères différentes. C'est pourquoi deux fichiers « identiques » peuvent coexister dans un même dossier, et pourquoi une recherche avec la forme composée ne trouve pas le fichier décomposé. Le rendu de l'accent, propre ou décalé, dépend de la police et du logiciel qui affiche le nom. Un même fichier peut donc sembler correct dans l'Explorateur et cassé dans un client de messagerie.
Le contenu du fichier n'est pas touché. Un PDF au nom décomposé s'ouvre exactement comme n'importe quel autre PDF. Seule l'étiquette est fausse.
Comment corriger un nom de fichier Mac cassé sous Windows
Choisissez la méthode qui correspond au nombre de fichiers à traiter.
Un ou deux fichiers : retaper le nom sous Windows
- Sélectionnez le fichier dans l'Explorateur de fichiers et appuyez sur F2 (Renommer).
- Effacez les caractères concernés et tapez-les à nouveau avec votre clavier (par exemple avec le code Alt, le clavier tactile, ou en copiant depuis un document Word que vous avez vous-même tapé).
- Appuyez sur Entrée.
Windows enregistre alors la forme composée, et le nom se comporte normalement. Ne recollez pas l'ancien nom : vous réutiliseriez l'orthographe décomposée.
Un dossier entier : PowerShell
Windows inclut PowerShell, et .NET propose une fonction de normalisation intégrée. Aucun téléchargement n'est nécessaire.
- Ouvrez le dossier dans l'Explorateur de fichiers.
- Cliquez dans la barre d'adresse, tapez
powershellet appuyez sur Entrée. Une fenêtre s'ouvre directement dans ce dossier. - Collez cette ligne et appuyez sur Entrée :
Get-ChildItem -File | Where-Object { $_.Name -ne $_.Name.Normalize('FormC') } | Rename-Item -NewName { $_.Name.Normalize('FormC') }
La partie Where-Object ignore les fichiers dont le nom est déjà composé, donc lancer la commande deux fois ne pose aucun problème. Retirez -File si vous voulez aussi renommer les dossiers, et ajoutez -Recurse après Get-ChildItem pour inclure les sous-dossiers. Comme pour tout renommage en masse, faites d'abord un essai sur une copie si les fichiers sont importants.
Pas de ligne de commande, ou un PC partagé ou verrouillé : un outil en ligne
L'application web FilenameFixer est gratuite et fonctionne dans le navigateur. Vous glissez vos fichiers sur la page, l'outil les renomme en lot de NFD vers NFC, et vous téléchargez le résultat. Le traitement se fait localement dans votre navigateur : les fichiers et leurs noms ne sont pas envoyés à un serveur, ce qui compte si les documents sont confidentiels. Une zone de texte permet aussi de coller une liste de noms (depuis un tableur ou un courriel) et de récupérer la version composée.
Noms de fichiers cassés dans une archive ZIP
Les archives ZIP sont le vecteur le plus courant de ce problème, car la commande « Compresser » du Finder écrit les noms décomposés dans l'archive. Quand un utilisateur Windows l'extrait, tous les noms accentués, coréens ou japonais qu'elle contient sont en NFD.
Vous pouvez extraire l'archive, puis lancer la commande PowerShell ci-dessus. Vous pouvez aussi corriger l'archive avant de l'extraire : la page de restauration des noms de fichiers ZIP de FilenameFixer accepte une archive allant jusqu'à 200 Mo, réécrit les noms qu'elle contient et vous rend un fichier ZIP qui s'extrait proprement sous Windows. Là encore, le traitement se fait dans le navigateur, sans envoi de l'archive.
Si les noms d'une archive ne sont pas seulement découpés mais réellement illisibles (points d'interrogation, carrés, ou suites comme « ÀÌ¹Ì »), le problème est différent. Il s'agit d'un souci d'encodage hérité, et non de NFD. Il faut alors regarder du côté de la fonction « Extraire tout » de Windows ou d'un logiciel d'archivage tiers proposant un réglage d'encodage.
Éviter le problème la prochaine fois
Si vous envoyez des fichiers depuis un Mac. Quand c'est possible, évitez les accents et les caractères non latins dans les noms destinés à des utilisateurs Windows. « helene-facture.pdf » circule partout. Si les noms doivent garder leur orthographe, passez-les par un outil de normalisation avant l'envoi, et indiquez au destinataire quoi faire si un nom reste mal affiché.
Si vous envoyez des fichiers par formulaire web. Beaucoup de sites et de systèmes de gestion de contenu enregistrent les noms en NFC et gèrent mal la version décomposée. Un envoi depuis un Mac peut donc aboutir à un nom différent de l'original, voire être refusé. L'extension Chrome FilenameFixer normalise automatiquement les noms au moment où vous choisissez un fichier dans une boîte de dialogue d'envoi, ce qui évite de devoir renommer les fichiers à l'avance. L'extension elle-même ne contient pas d'outil d'analyse d'audience.
Si vous écrivez des scripts ou administrez un serveur. Normalisez les noms en NFC à l'endroit où les fichiers entrent dans votre système, et comparez les noms seulement après avoir normalisé les deux côtés. En Python, c'est unicodedata.normalize("NFC", name) ; en JavaScript, name.normalize("NFC") ; en .NET, name.Normalize(NormalizationForm.FormC). Les utilisateurs de Git sur macOS peuvent exécuter git config --global core.precomposeunicode true : les noms sont alors enregistrés sous forme composée et n'apparaissent plus comme modifiés en permanence entre un Mac et un poste Windows.
Questions fréquentes
Le fichier est-il endommagé ? Non. Seule l'orthographe du nom diffère. Renommer ne touche jamais au contenu.
Pourquoi le nom semble-t-il correct dans l'Explorateur, mais pas dans la recherche ou dans mon outil de synchronisation ? Avec la plupart des polices, l'Explorateur affiche les deux orthographes presque à l'identique. La recherche et les outils de synchronisation comparent les caractères bruts, où « é » et « e + accent » ne sont pas égaux.
L'utilisateur de Mac verra-t-il correctement le fichier renommé ? Oui. Les versions récentes de macOS lisent les deux formes. La forme composée reste le choix le plus sûr pour tout ce qui circule entre systèmes.
Faut-il installer quelque chose ? Pas pour la méthode PowerShell. L'outil en ligne nécessite seulement un navigateur courant comme Chrome, Edge, Firefox ou Safari. L'extension Chrome est facultative et n'aide que pour les envois sur des sites web.
En bref : NFD et NFC sont deux écritures des mêmes lettres. macOS produit souvent l'une, Windows attend l'autre. Convertir les noms, en les retapant, avec PowerShell ou avec un outil en ligne, remet les fichiers en ordre de marche.