Dos representaciones de Caffè
El literal italiano «Caffè» puede terminar en è compuesta o en e más grave combinante. Ambas formas tienen cinco grafemas, pero cinco y seis puntos respectivamente. Pueden no coincidir en una comparación exacta. Revisa códigos antes de corregir; letras incorrectas por mala codificación necesitan revisar bytes originales, no normalización.
Qué significan NFC y NFD
NFC compone donde es posible y NFD descompone canónicamente, según las reglas Unicode. Una forma común permite comparar cadenas equivalentes, no palabras simplemente parecidas. E y È siguen distintas, igual que casa y Casa. Separa normalización, conversión de mayúsculas y limpieza de espacios para entender cada cambio.

Cuándo resulta útil
Listas de distintas fuentes pueden necesitar que composiciones equivalentes de acentos coincidan. Guarda texto de presentación y una clave de comparación separada. Acuerda la normalización antes de medir bytes. Contraseñas, firmas, identificadores y archivos de identidad exacta siguen su protocolo; una regla de catálogo no se aplica automáticamente a ellos.
Conserva los acentos significativos
Descomponer y borrar marcas combinantes puede producir otra palabra. Una búsqueda permisiva puede usar esa clave, pero no debe sustituir el texto entregado. En italiano los acentos distinguen palabras y gramática. Ignorar apóstrofos o guiones para comparar tampoco autoriza borrarlos al publicar. Consulta mayúsculas y acentos.
Las formas de compatibilidad requieren otra decisión
La normalización de compatibilidad puede convertir símbolos especiales en secuencias ordinarias. Facilitar coincidencias no justifica aplicarla sin más. Un archivo puede distinguir numeración, símbolos y formas por una razón. Usa esas transformaciones con propósito definido y conserva originales; la clave de deduplicación puede ser más permisiva que la forma publicada.
Repite una prueba mínima
Compara è con e más grave combinante antes y después de NFC. Al principio difieren; después coinciden. Cuenta puntos y bytes para ver el cambio. testo.normalize("NFC") devuelve otra cadena sin borrar manualmente marcas. Si siguen distintas, revisa espacios no separables, invisibles y apóstrofos que NFC no iguala.
Cómo analiza nuestro contador
El contador normaliza a NFC antes de analizar; eso no promete reescribir visiblemente el editor. Ambas formas de Caffè dan cinco caracteres principales, mientras los bytes originales difieren. Texto introducido y representación analizada tienen funciones distintas. Mide además la entrega técnica real en su codificación; consulta caracteres y bytes.
Registra reglas antes de eliminar duplicados
Conserva números de filas inicial y final y revisa eliminaciones. Coincidir después de transformar es una decisión de trabajo, no una propiedad universal del archivo. Un catálogo puede unir formas canónicas manteniendo la primera; un inventario técnico puede conservar ambas. Las reglas de duplicados deben permitir corregir decisiones sin reconstruir datos borrados.
Incluye una prueba que deba seguir distinta
NFC mantiene e y è diferentes. Prueba tanto una pareja que deba unificarse como otra que deba conservarse. Si ambas se funden, la regla es demasiado amplia. Comprende la transformación en vez de parchear excepciones manualmente y vuelve a probar al cambiar herramienta o fuente.
Dos representaciones de una palabra
| Representación | Grafemas | Puntos de código | Bytes UTF-8 |
|---|---|---|---|
| Caffè con è compuesta | 5 | 5 | 6 |
| Caffe + U+0300 | 5 | 6 | 7 |
| NFC | 5 | 5 | 6 |
Fuentes y comprobaciones
- Unicode UAX #15: Normalization Forms · Canonical equivalence and NFC/NFD forms
- MDN: String.normalize() · Normalization API and canonical versus compatibility forms