← Tous les articles

NFD NFC nom de fichier : 5 symptômes à l'upload, corrigés

Si un fichier envoyé depuis un Mac apparaît sur un site web avec un nom légèrement déformé, un lien de téléchargement qui renvoie « fichier introuvable », ou un nom que la recherche du site ne trouve pas alors qu'il est sous vos yeux, vous êtes presque certainement face à un problème NFD NFC de nom de fichier. macOS enregistre les lettres accentuées et les caractères non latins sous une forme Unicode dite décomposée (NFD), tandis que la plupart des serveurs web, des CMS et des navigateurs attendent la forme composée (NFC). La solution consiste à renommer le fichier en NFC avant de le mettre en ligne, ou à faire normaliser les noms par le serveur à la réception. Voici les cinq symptômes que cela provoque sur les sites web, ce que chacun signifie, et la façon la plus rapide de le corriger.

D'où vient le problème NFD NFC sur un nom de fichier

Un caractère comme é peut s'écrire de deux façons en Unicode. La forme composée tient en un seul point de code, U+00E9. La forme décomposée en utilise deux : un e ordinaire suivi d'un accent aigu combinant. À l'écran, les deux sont identiques. Même chose pour ç, qui peut être un c suivi d'une cédille combinante. Le coréen connaît le même phénomène à plus grande échelle : 한글 peut être stocké comme deux syllabes composées ou comme une suite de lettres séparées. En japonais, un kana avec dakuten comme が peut être un seul caractère ou か suivi d'une marque de voisement distincte.

Historiquement, macOS produit la version décomposée (NFD) quand vous enregistrez un fichier portant un tel nom. Presque tout le reste, dont Windows, les serveurs Linux, PHP, Node, les frameworks web en Python et les navigateurs qui affichent le résultat, suppose du NFC. Quand un nom en NFD arrive dans un système qui attend du NFC, le système ne le « répare » pas : il le traite comme une chaîne différente. Ce simple décalage explique tous les symptômes qui suivent.

Sont concernés tous les noms de fichiers contenant des caractères hors ASCII : un rapport nommé Compte-rendu_réunion_février.pdf, une photo Noël_chez_Hélène.jpg, un devis Devis_Reçu_Lefèvre.xlsx, ou un tableau envoyé par un collègue coréen 예산안_2026.xlsx. Si vos noms sont en ASCII pur (rapport_2026.pdf), rien de tout cela ne vous concerne.

Les cinq symptômes et la correction pour chacun

1. Les accents ou les lettres apparaissent détachés après la mise en ligne

Ce que vous voyez : la liste des fichiers de votre CMS, de votre plateforme pédagogique ou de votre espace client affiche He´lene.pdfavec les accents qui flottent, ou un nom coréen renduㅎㅏㄴㄱㅡㄹ.docx` avec chaque lettre séparée. Sur d'autres systèmes, le nom s'affiche correctement.

Pourquoi : la police ou le moteur de rendu du site ne sait pas combiner la lettre de base avec la marque combinante séparée, donc il les dessine côte à côte.

Correction : renommez le fichier en NFC avant de l'envoyer, puis renvoyez-le. Si la plateforme ne permet pas de supprimer l'entrée défectueuse, demandez à l'administrateur du site de la retirer, car envoyer une version corrigée créera probablement un second fichier au lieu de remplacer le premier (voir le symptôme 4).

2. Le lien de téléchargement renvoie une erreur 404 ou « fichier introuvable »

Ce que vous voyez : le fichier s'est envoyé sans erreur. Il figure dans la médiathèque. Un clic sur le lien donne une 404, ou la page indique que le fichier n'existe pas.

Pourquoi : le serveur a stocké le fichier sous son nom en NFD, mais le lien qu'il a généré, ou l'enregistrement en base de données, a été normalisé en NFC quelque part en chemin. L'URL pointe vers un nom qui diffère d'une séquence d'octets du vrai fichier sur le disque. Dans la barre d'adresse, les deux ont l'air identiques.

Correction : ponctuellement, renvoyez le fichier avec un nom en NFC. Si cela se produit sur votre propre site, la vraie correction est côté serveur : normalisez chaque nom entrant en NFC avant de l'enregistrer. En Python : unicodedata.normalize("NFC", nom) ; en JavaScript : nom.normalize("NFC") ; en PHP : Normalizer::normalize($nom, Normalizer::FORM_C). Faites-le une fois à l'entrée de l'upload et le problème disparaît pour tous les utilisateurs.

3. La recherche ne trouve pas le fichier, alors qu'il est bien là

Ce que vous voyez : vous tapez Hélène dans la recherche du site, ou vous faites Ctrl+F dans la liste des fichiers, et rien ne correspond. Pourtant le fichier est visible dans la liste.

Pourquoi : la recherche compare des séquences d'octets. Vous avez saisi du NFC ; le nom stocké est en NFD. Ils ne sont pas égaux, donc aucune correspondance. Le même phénomène se produit dans certains clients de messagerie quand on cherche un nom de pièce jointe.

Correction : renommez en NFC et renvoyez le fichier. En attendant, cherchez la partie du nom sans accent (Lef au lieu de Lefèvre), qui correspondra aux deux formes.

4. « Un fichier portant ce nom existe déjà », ou deux fichiers d'apparence identique

Ce que vous voyez : la plateforme refuse l'envoi, ou vous vous retrouvez avec deux fichiers qui semblent porter exactement le même nom.

Pourquoi : une copie est en NFD, l'autre en NFC. Pour le système, ce sont deux noms différents : soit il détecte un conflit dans une table de correspondance de noms, soit il stocke tranquillement les deux.

Correction : supprimez la copie en NFD et gardez celle en NFC. Si vous ne pouvez pas les distinguer à l'œil, téléchargez les deux et vérifiez (voir « Comment savoir dans quelle forme est un nom de fichier » ci-dessous).

5. Des scripts, des imports ou des formulaires rejettent le nom

Ce que vous voyez : un importateur en masse, un formulaire qui valide les noms de fichiers, ou un script de build échoue avec un message parlant de caractères invalides, alors que le nom ne contient que des lettres ordinaires.

Pourquoi : les règles de validation écrites sous forme d'expressions régulières autorisent souvent les lettres accentuées précomposées, mais pas les marques combinantes. Un é décomposé contient U+0301, que beaucoup de motifs « lettres uniquement » n'acceptent pas.

Correction : normalisez en NFC avant que le fichier n'atteigne le validateur. Si le validateur est à vous, normalisez l'entrée d'abord, puis validez.

Comment savoir dans quelle forme est un nom de fichier

À l'œil, c'est impossible, et c'est tout le problème. Trois vérifications fiables :

  1. Sur Mac, dans le Terminal : ls | xxd | head. Un é composé apparaît comme c3 a9. Un é décomposé apparaît comme 65 cc 81 (le e, puis l'accent combinant). Pour ç, c'est c3 a7 en composé et 63 cc a7 en décomposé.
  2. Sur Windows, dans PowerShell : [int[]][char[]]"Léa" affiche les points de code. 76, 233, 97 est composé ; 76, 101, 769, 97 est décomposé.
  3. Dans la console de n'importe quel navigateur : "Léa".normalize("NFD") === "Léa" renvoie true si la chaîne que vous avez collée est déjà en NFD.

Retaper le nom à la main dans le Finder produit parfois du NFC et parfois non, selon le système de fichiers et la façon dont le nom a été saisi : à lui seul, retaper n'est donc pas une correction fiable.

Corriger les noms de fichiers en lot avant la mise en ligne

Pour un ou deux fichiers, retaper le nom sur un PC Windows, ou renommer sur le serveur après l'envoi, suffit. Pour un dossier de 80 photos aux noms accentués, ou un semestre entier de supports de cours, ce n'est plus praticable.

Options qui ne demandent aucun outil supplémentaire :

  • Utiliser des noms en ASCII uniquement. Helene_Lefevre_CV.pdf ne rencontrera jamais ce problème. C'est le choix le plus robuste pour tout ce qui sera lié publiquement.
  • Normaliser avec un script d'une ligne. Sur macOS, Python est disponible : for f in *; do mv "$f" "$(python3 -c 'import sys,unicodedata;print(unicodedata.normalize("NFC",sys.argv[1]))' "$f")"; done. Cela fonctionne, mais le script renommera des choses que vous ne vouliez pas toucher si vous l'exécutez dans le mauvais dossier.
  • Corriger côté serveur. Si vous contrôlez le site, normaliser à l'upload protège tous les futurs utilisateurs, pas seulement vous.

Si vous préférez ne pas lancer de scripts, FilenameFixer est une application web gratuite qui fait exactement cette conversion. Vous glissez les fichiers dans le navigateur, elle les renomme de NFD en NFC par lot, et le traitement se fait localement dans votre navigateur plutôt que sur un serveur. Elle accepte aussi du texte collé, pratique pour vérifier rapidement un seul nom, et elle peut restaurer les noms de fichiers à l'intérieur d'archives ZIP jusqu'à 200 Mo. Pour le cas précis de la mise en ligne, l'extension Chrome qui l'accompagne normalise automatiquement les noms au moment où vous envoyez les fichiers sur un site web, de sorte que les symptômes 1 à 5 ne se produisent pas du tout. Le site existe en anglais, coréen, japonais, français, allemand, espagnol et vietnamien.

Une limite à connaître : aucune de ces approches ne peut réparer un fichier déjà présent sur le serveur sous un nom cassé. Pour ceux-là, supprimez et renvoyez, ou demandez à la personne qui gère le site de le renommer sur le disque.

Aide-mémoire

Symptôme Où ça coince Correction
Accents détachés ou lettres séparées Liste de fichiers, médiathèque Renommer en NFC, renvoyer
404 sur le lien de téléchargement URL publique, CMS Renvoyer ; normaliser côté serveur
La recherche ne trouve rien Recherche du site, Ctrl+F, e-mail Renommer en NFC ; chercher la partie sans accent
Doublon ou « existe déjà » Uploads, dossiers partagés Supprimer la copie en NFD

Une fois qu'on sait que deux noms d'apparence identique peuvent être deux chaînes différentes, chacun de ces symptômes devient prévisible. Normalisez en NFC avant que le fichier ne quitte votre Mac, ou à l'entrée du serveur, et le site web traitera le nom comme vous l'attendiez depuis le début.