← Todos los artículos

Nombre de archivo con tildes roto en Windows: NFD y NFC

Si el nombre de un archivo creado en Mac se ve mal en Windows —"José_factura.pdf" aparece con la tilde flotando por separado, "España_presupuesto.xlsx" muestra una ñ rota, o la búsqueda de Windows no encuentra un archivo que sí ves en la carpeta— el archivo está bien. Lo que pasa es que el nombre está guardado con otra forma Unicode (llamada NFD) distinta de la que espera Windows (NFC). La solución es reescribir el nombre en la forma compuesta: puedes volver a escribirlo en Windows, ejecutar un comando corto de PowerShell o pasar los archivos por una herramienta gratuita en el navegador, como FilenameFixer, que convierte los nombres de una vez.

Este artículo explica qué está pasando sin dar por hecho que eres programador y después recorre las soluciones de menor a mayor esfuerzo.

Qué aspecto tiene un nombre de archivo roto de Mac en Windows

El problema solo afecta a los nombres que contienen letras que se pueden escribir como una letra base más un signo diacrítico. En la práctica:

  • Letras latinas con acento: José, Zoë, Müller, camión, mañana, canción, crème brûlée
  • La ñ, que también se descompone en n + tilde
  • Coreano: cualquier sílaba hangul, porque cada sílaba se forma con letras sueltas (jamo)
  • Japonés: kana con dakuten o handakuten, como が, ぱ o ど
  • Vietnamita y otros idiomas con varios diacríticos apilados

Los nombres solo con letras ASCII sin acentos, como "informe_final_v3.docx", nunca tienen este problema. Por eso muchas personas llevan años sin darse cuenta.

Síntomas típicos en el lado de Windows:

  1. El nombre se muestra con un hueco visible o con un acento separado de la letra. En coreano o japonés, las sílabas se separan en letras sueltas.
  2. El nombre se ve bien en el Explorador de archivos, pero al escribirlo en el cuadro de búsqueda no aparece nada.
  3. Parece que hay dos archivos con exactamente el mismo nombre en la misma carpeta, y Windows no protesta. Uno se creó en el Mac y el otro en Windows.
  4. Un script, una herramienta de copias de seguridad o un cliente de sincronización informa de "archivo no encontrado" para un archivo que está claramente ahí.
  5. Un formulario web rechaza la subida o guarda el nombre con una ortografía extraña.

También ocurre al revés. Un usuario de Windows envía "Zoë.jpg" a un Mac, y un script del Mac que busca la versión escrita en Windows falla. La causa es la misma.

Por qué pasa: NFD y NFC explicados sin tecnicismos

Unicode es el estándar que permite a los ordenadores escribir todos los idiomas. Permite que algunos caracteres se escriban de dos maneras distintas que en pantalla se ven idénticas.

  • Forma compuesta (NFC): la "é" es un único carácter. Es lo que obtienes al escribir é en un teclado de Windows, y es lo que suponen la mayoría de servidores web, bases de datos y sistemas de archivos.
  • Forma descompuesta (NFD): la "é" son dos caracteres: una "e" normal seguida de un "acento agudo combinado" que se dibuja encima. Lo mismo pasa con la ñ (n + tilde combinada), con el coreano, donde "한" se convierte en ㅎ + ㅏ + ㄴ, y con el japonés, donde "が" se convierte en か + un signo dakuten separado.

NFC y NFD son solo los nombres técnicos de "compuesta" y "descompuesta". Las siglas significan Normalization Form C y Normalization Form D, pero no necesitas recordarlo.

Durante muchos años, macOS guardó en el disco todos los nombres de archivo en forma descompuesta. Los Mac más recientes son más flexibles, pero buena parte del software de macOS sigue generando nombres descompuestos, incluido el comando "Comprimir" del Finder, que crea archivos ZIP. Así que cuando un archivo sale de un Mac —por un ZIP, un USB, un correo electrónico, una carpeta compartida o una subida a una web— su nombre suele viajar en NFD.

Windows no convierte nada. Trata las dos formas como secuencias de caracteres distintas. Por eso puedes acabar con dos archivos "idénticos" en una carpeta, y por eso buscar la forma compuesta no encuentra el archivo descompuesto. Que el acento se vea bien o con un hueco depende de la fuente y del programa que muestra el nombre. Por eso el mismo archivo puede verse bien en el Explorador y mal en un cliente de correo.

El contenido del archivo no se ve afectado. Un PDF con nombre descompuesto se abre exactamente igual que cualquier otro PDF. Solo la etiqueta está mal escrita.

Cómo arreglar un nombre de archivo roto de Mac en Windows

Elige el método según cuántos archivos tengas.

Uno o dos archivos: volver a escribir el nombre en Windows

  1. Selecciona el archivo en el Explorador de archivos y pulsa F2 (Cambiar nombre).
  2. Borra los caracteres afectados y escríbelos de nuevo con tu teclado: por ejemplo, con código Alt, con el teclado táctil o copiando la letra desde un documento de Word que hayas escrito tú.
  3. Pulsa Intro.

Windows guarda la forma compuesta, así que el nombre funciona con normalidad. No pegues el nombre antiguo, porque eso volvería a reutilizar la forma descompuesta.

Una carpeta llena de archivos: PowerShell

Windows incluye PowerShell, y .NET tiene una función de normalización integrada, así que no hace falta descargar nada.

  1. Abre la carpeta en el Explorador de archivos.
  2. Haz clic en la barra de direcciones, escribe powershell y pulsa Intro. Se abre una ventana ya situada en esa carpeta.
  3. Pega esta línea y pulsa Intro:
Get-ChildItem -File | Where-Object { $_.Name -ne $_.Name.Normalize('FormC') } | Rename-Item -NewName { $_.Name.Normalize('FormC') }

La parte Where-Object omite los archivos cuyos nombres ya están compuestos, así que ejecutarlo dos veces no causa problemas. Quita -File si también quieres renombrar carpetas, y añade -Recurse después de Get-ChildItem para incluir las subcarpetas. Como en cualquier renombrado masivo, si los archivos son importantes, prueba primero con una copia.

Sin línea de comandos, o en un PC compartido o bloqueado: una herramienta en el navegador

La aplicación web de FilenameFixer hace la misma conversión desde el navegador. Arrastras los archivos a la página, se renombran de NFD a NFC en un solo lote y descargas los resultados. El procesamiento se hace en tu navegador: los archivos y sus nombres no se envían a ningún servidor, lo que importa si los documentos son confidenciales. También hay un cuadro de texto donde puedes pegar una lista de nombres (por ejemplo, desde una hoja de cálculo o un correo) y recuperar la versión compuesta.

Nombres dentro de un ZIP que se ven mal entre Mac y Windows

Los archivos ZIP son el medio más habitual de este problema, porque el comando Comprimir del Finder escribe nombres descompuestos dentro del archivo. Cuando un usuario de Windows extrae el ZIP, todos los nombres con acento, coreanos o japoneses que contiene están en NFD a la vez.

Puedes extraer primero y ejecutar después el comando de PowerShell de arriba. O, si prefieres arreglar el archivo antes de extraerlo, FilenameFixer tiene una página para restaurar nombres en ZIP que acepta archivos de hasta 200 MB, reescribe los nombres de su interior y te devuelve un ZIP que se extrae bien en Windows. También en este caso el proceso se hace en el navegador, sin subir el archivo.

Si los nombres dentro del ZIP no solo están separados, sino que son ilegibles (signos de interrogación, cuadros o cadenas como "ÃÂ"), es otro problema: un problema de codificación antigua, no de NFD. Para ese caso, mira en el cuadro de diálogo "Extraer todo" de Windows o en un programa de compresión de terceros que tenga una opción de codificación.

Cómo evitar el problema la próxima vez

Si envías archivos desde un Mac. Cuando puedas, evita las tildes y los caracteres no latinos en los nombres de archivo destinados a usuarios de Windows. "jose-factura.pdf" funciona en cualquier sitio. Si los nombres deben conservar su ortografía, pásalos por un normalizador antes de enviarlos y explica al destinatario qué hacer si algo sigue sin verse bien.

Si subes archivos a través de formularios web. Muchas webs y gestores de contenidos guardan los nombres en NFC y no gestionan bien la versión descompuesta, así que una subida desde Mac puede terminar con un nombre distinto o rechazado. La extensión de Chrome de FilenameFixer normaliza los nombres automáticamente en el momento en que eliges un archivo en el diálogo de subida, lo que evita tener que renombrar antes. La extensión en sí no incluye analítica.

Si escribes scripts o gestionas un servidor. Normaliza los nombres a NFC en el punto en que los archivos entran en tu sistema, y compara nombres solo después de normalizar ambos lados. En Python es unicodedata.normalize("NFC", nombre); en JavaScript, nombre.normalize("NFC"); en .NET, nombre.Normalize(NormalizationForm.FormC). Los usuarios de Git en macOS pueden ejecutar git config --global core.precomposeunicode true para que los nombres se registren en forma compuesta y no aparezcan como modificados sin fin entre las copias de trabajo de Mac y de Windows.

Preguntas rápidas

¿Se ha dañado el archivo? No. Solo el nombre está escrito de otra forma. Renombrarlo nunca toca el contenido.

¿Por qué el nombre se ve bien en el Explorador pero no en la búsqueda ni en mi herramienta de sincronización? Con la mayoría de fuentes, el Explorador dibuja las dos formas casi igual. Los buscadores y las herramientas de sincronización comparan los caracteres tal cual, y "é" no es igual a "e + acento".

¿El usuario de Mac verá bien el archivo renombrado? Sí. El macOS actual lee las dos formas. La forma compuesta es la opción más segura para cualquier cosa que se mueva entre sistemas.

¿Necesito instalar algo? No para la ruta de PowerShell. La herramienta del navegador solo necesita Chrome, Edge, Firefox o Safari. La extensión de Chrome es opcional y solo ayuda con las subidas a webs.

En resumen: NFD y NFC son dos formas de escribir las mismas letras. macOS tiende a producir una y Windows espera la otra. Convertir los nombres, volviendo a escribirlos, con PowerShell o con una herramienta del navegador, hace que los archivos vuelvan a funcionar con normalidad.