¿Por qué se rompen los nombres de archivo entre Mac y Windows?
¿Alguna vez enviaste un archivo desde un Mac a un PC con Windows y el nombre del archivo apareció ilegible, con acentos separados o caracteres extraños? Este es el problema de Unicode NFD vs NFC.
¿Qué es Unicode?
Unicode es el estándar universal para la codificación de texto. Asigna un número único (llamado punto de código) a cada carácter de cada idioma. Por ejemplo, la letra 'A' es U+0041 y la 'ñ' es U+00D1.
NFC vs NFD: La causa raíz
Unicode permite representar ciertos caracteres de dos maneras diferentes:
NFC (Forma compuesta)
Los caracteres se almacenan como un solo punto de código. Por ejemplo, 'ñ' se almacena como U+00D1.
NFD (Forma descompuesta)
Los caracteres se descomponen en un carácter base y marcas combinatorias. La misma 'ñ' se convierte en U+004E (N) + U+0303 (tilde combinatoria).
Ambas formas se ven idénticas en pantalla pero se almacenan de forma diferente en memoria. Esta diferencia es la causa raíz de los nombres de archivo rotos.
¿Por qué macOS usa NFD?
Apple eligió NFD para sus sistemas de archivos (HFS+ y luego APFS) porque la forma descompuesta simplifica la comparación y ordenamiento de cadenas. Cuando macOS guarda un archivo, convierte automáticamente el nombre a NFD. Windows y Linux, en cambio, generalmente usan NFC. Por eso, al transferir un archivo de Mac a Windows, el nombre puede contener caracteres descompuestos que Windows no muestra correctamente.
🇰🇷 Coreano: El caso más visible
El coreano es donde este problema es más evidente. En NFC, la sílaba '한' es un solo carácter (U+D55C). En NFD, se descompone en tres jamo: 'ㅎ' + 'ㅏ' + 'ㄴ'. Un archivo llamado '한글.txt' se convierte en 'ㅎㅏㄴㄱㅡㄹ.txt' en Windows, completamente ilegible.
ㅎㅏㄴㄱㅡㄹ.txt한글.txt🇫🇷 Francés: Acentos separados
Los caracteres acentuados del francés como é, è, ê y ç se ven afectados. En NFD, 'résumé.pdf' se convierte en 'r + e + acento agudo combinatorio + sumé + acento agudo combinatorio.pdf'. En algunos sistemas puede parecer similar, pero causa problemas en búsquedas y ordenamiento de archivos.
résumé.pdfrésumé.pdf🇩🇪 Alemán: Diéresis rotas
Las diéresis alemanas (ö, ü, ä) se descomponen en NFD. 'Über.docx' se convierte en 'U + diéresis combinatoria + ber.docx'. Esto puede causar problemas al compartir archivos con usuarios de Windows o Linux.
Über.docxÜber.docx🇻🇳 Vietnamita: Diacríticos complejos
El vietnamita se ve especialmente afectado porque sus caracteres suelen llevar múltiples marcas diacríticas. Un carácter como 'ệ' puede descomponerse en 'e + circunflejo combinatorio + punto inferior combinatorio', tres puntos de código para un solo carácter visible.
Việt Nam.txtViệt Nam.txt🇪🇸 Español: El problema de la ñ
La ñ española se descompone de U+00D1 a 'N' + tilde combinatoria (U+0303). Las vocales acentuadas como á, é, í, ó, ú también se ven afectadas.
España.txtEspaña.txt¿Cuándo ocurre este problema?
- Al enviar archivos adjuntos por email desde Mac a Windows
- Al compartir archivos por USB
- Al subir archivos al almacenamiento en la nube (Google Drive, Dropbox, OneDrive)
- Al transferir archivos por red (NAS, recursos compartidos SMB)
- Al extraer archivos ZIP creados en Mac
- Al usar sistemas de control de versiones (Git)
Cómo FilenameFixer resuelve esto
FilenameFixer convierte los nombres de archivo de NFD a NFC usando el método nativo de JavaScript String.prototype.normalize(). La conversión ocurre completamente en tu navegador, ningún archivo se envía a un servidor. El contenido de tus archivos permanece intacto; solo se cambia el nombre.
¿Por qué procesar en el navegador?
Procesar archivos en el navegador significa que tus datos nunca salen de tu dispositivo. No hay servidor en quien confiar, no hay política de privacidad de qué preocuparse y no hay riesgo de filtraciones. La herramienta también funciona sin conexión y es increíblemente rápida.