¿Qué es la normalización Unicode?

Unicode define múltiples formas de representar el mismo carácter visible. Por ejemplo, el carácter "é" puede almacenarse como un único punto de código precompuesto (U+00E9) o como la letra "e" seguida de un acento agudo combinado (U+0065 U+0301). Ambos se renderizan de forma idéntica pero son byte a byte diferentes, lo que causa problemas en la comparación de cadenas, búsqueda y procesamiento de texto.

La normalización Unicode es el proceso de convertir texto a una representación canónica para que las cadenas equivalentes se vuelvan idénticas. El Estándar Unicode define cuatro formas de normalización:

  • NFC (Descomposición Canónica, seguida de Composición Canónica): Forma precompuesta; más compacta, ampliamente utilizada en la web y en la mayoría de sistemas operativos.
  • NFD (Descomposición Canónica): Forma completamente descompuesta; cada carácter se divide en letra base más marcas combinadas.
  • NFKC (Descomposición de Compatibilidad, seguida de Composición Canónica): Como NFC pero también convierte caracteres de compatibilidad (p. ej., ligaduras, superíndices, variantes de ancho completo) en sus equivalentes canónicos.
  • NFKD (Descomposición de Compatibilidad): Como NFD pero también aplica descomposición de compatibilidad.

Descripción de la herramienta

Esta herramienta normaliza texto Unicode de una forma de normalización a otra. Selecciona las formas de origen y destino, pega tu texto y el resultado convertido aparece al instante.

Características

  • Las cuatro formas de normalización: Admite NFC, NFD, NFKC y NFKD como origen y destino.
  • Conversión bidireccional: Cambia entre cualquier combinación de formas libremente.
  • Salida en tiempo real: El texto se normaliza al instante mientras escribes o pegas.
  • Maneja cualquier script Unicode: Funciona con texto latino, CJK, árabe, cirílico y cualquier otro texto codificado en Unicode.

Cómo funciona

La herramienta aplica el método estándar de JavaScript String.prototype.normalize() con la forma de destino seleccionada. Esta es una implementación completamente conforme a la especificación de la normalización Unicode tal como se define en el Anexo #15 del Estándar Unicode.

Casos de uso

  • Correcciones de comparación de cadenas: Normaliza el texto antes de compararlo o indexarlo para asegurar que las cadenas visualmente idénticas coincidan correctamente.
  • Consistencia de búsqueda y base de datos: Estandariza la entrada del usuario a una única forma (típicamente NFC) antes de almacenarla en una base de datos para evitar entradas duplicadas que difieran solo en la codificación.
  • Conversión de compatibilidad: Usa NFKC para contraer ligaduras, superíndices y caracteres de ancho completo en sus equivalentes estándar para indexación de búsqueda o procesamiento de lenguaje natural.