ForHosting KIT · Utilidades de desarrollo

Normalizador Unicode NFD

La palabra café, escrita con una é, sale como cinco puntos de código: c, a, f, e y un acento agudo combinante. Cada letra precompuesta se separa en base y marcas, y dos textos que se ven iguales coinciden cuando ambos están en NFD. Gratis en su navegador.

  • Gratis
  • Funciona en su navegador
  • Sin registro
  • Sus datos no salen de su equipo
Úselo desde WebAPIEmailTelegramApp pronto
Si escribe
Texto
café
Obtiene
Resultado
café
Forma
NFD
Longitud (in)
4
Longitud de salida
5

La forma de normalización Unicode D, o NFD, reescribe una cadena de modo que cada carácter precompuesto se expande en un carácter base seguido de las marcas combinantes que definen su apariencia. Un café con e aguda precompuesta pasa a la secuencia de cinco puntos de código c-a-f-e más acento agudo combinante; las sílabas hangul se dividen en jamo; Å se convierte en A más un anillo combinante. Esta capacidad recibe un campo de texto, aplica el algoritmo NFD de la plataforma según el Unicode Standard Annex 15 y devuelve la cadena normalizada junto con estadísticas de longitud y un indicador de cambio.

Qué hace realmente la descomposición canónica NFD

Unicode almacena muchas letras acentuadas de dos maneras: como un único punto de código precompuesto, por ejemplo U+00E9 para la e minúscula latina con agudo, o como la letra base U+0065 seguida del acento agudo combinante U+0301. Ambas secuencias se ven iguales al renderizar, pero son secuencias de bytes distintas, rompen la igualdad de cadenas y pueden sorprender a comprobaciones de longitud, expresiones regulares y restricciones de unicidad en bases de datos.

La Normalization Form D, definida en el Unicode Standard Annex 15, aplica la descomposición canónica: todo carácter con un mapeo de descomposición canónica se sustituye por ese mapeo, y las marcas combinantes se ordenan por su clase de combinación para que las secuencias equivalentes queden idénticas. NFD no recompone después; ese paso de recomposición es NFC. NFD tampoco aplica mapeos de compatibilidad, de modo que una ligadura como fi o un dígito de ancho completo permanece tal cual: la descomposición de compatibilidad corresponde a NFKD y NFKC.

Las sílabas hangul reciben una descomposición algorítmica especial en jamo inicial, vocal y final, por eso una palabra coreana corta puede crecer varias veces en longitud de puntos de código sin dejar de ser el mismo texto lingüístico. Como la tabla de mapeo y el orden de marcas están fijados por la versión Unicode del runtime, la misma entrada siempre produce la misma cadena NFD en un motor dado.

Dónde aparece NFD en el trabajo de ingeniería real

Los pipelines de búsqueda y autocompletado suelen eliminar diacríticos tras NFD para que cafe coincida con café sin mantener una tabla de acentos escrita a mano para cada idioma. Los generadores de identificadores y slugs descomponen primero y luego quitan marcas combinantes, produciendo claves estables de tipo ASCII a partir de títulos orientados al usuario. El control de calidad de localización compara dos exportaciones que se ven iguales en pantalla pero fallan las pruebas de igualdad hasta forzar ambos lados a NFD.

Ingenieros de fuentes y de shaping inspeccionan secuencias descompuestas al depurar el anclaje de marcas y la sustitución de glifos. Los revisores de seguridad normalizan nombres de usuario y etiquetas de dominio antes de comprobaciones de listas permitidas para que homógrafos precompuestos y descompuestos no eludan un filtro que solo listó una forma. Los trabajos de migración de datos convierten corpus heredados densos en NFC a NFD cuando un sistema posterior documenta NFD como forma de almacenamiento.

Los cursos de programación enseñan codificación mostrando que un carácter visible puede convertirse en dos puntos de código tras NFD, y una página dedicada al normalizador atiende esa intención de búsqueda mejor que enterrarla bajo convertidores generales de puntos de código Unicode o herramientas Base64. Prefiera una herramienta NFC o NFKC aparte cuando necesite composición o plegado de compatibilidad; esta página se dirige a quien necesita específicamente la descomposición canónica Unicode NFD y una cadena normalizada determinista en la que confiar en pruebas y pipelines.

Claves de búsqueda conscientes de diacríticos

Descomponga títulos de producto y consultas de usuario a NFD y luego elimine marcas combinantes para construir índices de búsqueda y autocompletado insensibles a acentos.

Normalización de nombres de usuario y etiquetas

Normalice nombres de cuenta y etiquetas antes de comprobaciones de lista permitida o unicidad para que las formas precompuestas y descompuestas no diverjan.

¿Qué es Unicode NFD?

NFD es la Normalization Form D del Unicode Standard Annex 15. Aplica descomposición canónica para que los caracteres precompuestos pasen a carácter base más marcas combinantes, sin recomponerlos en NFC.

¿En qué se diferencia NFD de NFC o NFKD?

NFC descompone y luego recompone a formas precompuestas cuando es posible. NFKD y NFKC también aplican mapeos de compatibilidad (ligaduras, formas de ancho completo). Esta herramienta solo aplica la descomposición canónica NFD.

¿Qué ocurre si falta text o es inválido?

Se rechazan text ausente, objetos no cadena, números no finitos y entradas demasiado largas. Los fallos de validación no se cobran.

¿Se descompone el hangul?

Sí. Las sílabas hangul precompuestas se descomponen algorítmicamente en jamo bajo NFD, de modo que un texto coreano corto puede crecer en longitud de puntos de código sin dejar de ser el mismo texto.

¿Cuánto cuesta?

La herramienta del navegador es gratuita y se ejecuta en local.

Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.

POSThttps://api.kit.forhosting.com/enc/unicode-nfd

¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.

curl -X POST https://api.kit.forhosting.com/enc/unicode-nfd \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text":"café"}'
{
  "text": "café"
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "enc.unicode_nfd",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.

Por solicitud$0.002

Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.

HTTPCódigoSignificado
401unauthorizedAPI key ausente o inválida.
402insufficient_balanceEl saldo no cubre el precio de la tarea.
404unknown_typeEl tipo de tarea no existe.
429rate_limitedDemasiadas peticiones. Use el webhook en vez de sondear.

Una entrada inválida o ausente falla de inmediato con invalid_input para que un payload defectuoso no invente una cadena errónea en silencio.

Qué hace realmente la descomposición canónica NFD

Esta capacidad usa el método JavaScript String.prototype.normalize con la forma NFD, disponible en Workers y navegadores modernos, y es determinista: no intervienen llamadas de red, semillas aleatorias ni marcas de tiempo de reloj.

Cómo llamar a la API y leer la respuesta

Las cadenas vacías son válidas y devuelven un resultado NFD vacío con changed en false. Un ejemplo clásico con café crece de cuatro escalares a cinco e informa changed true con una marca combinante. ASCII simple como Hello permanece idéntico con changed false. Envíe un objeto JSON con un campo de cadena obligatorio llamado text. Se aceptan los alias input, value, data, s, str y string cuando omite text, de modo que los clientes ad hoc siguen funcionando. Los números finitos y los booleanos se convierten a su forma de cadena; objetos, matrices, text nulo, NaN e Infinity se rechazan con invalid_input y un mensaje claro en inglés. Las cadenas más largas que el máximo documentado de sesenta y cinco mil quinientos treinta y seis unidades de código UTF-16 se rechazan para que una sola solicitud no monopolice un Worker. En caso de éxito la respuesta repite el text original, asigna result a la cadena normalizada NFD, form a la constante NFD, changed a si result difiere de text bajo la desigualdad ordinaria de cadenas en JavaScript, length_in y length_out a conteos de escalares Unicode antes y después de la normalización, code_units_in y code_units_out a las longitudes UTF-16, combining_marks a un conteo de puntos de código de marcas combinantes habituales en el resultado, y standard a una etiqueta breve de UAX #15. La validación fallida no consume saldo prepago. El precio de las llamadas API correctas es la base publicada de $0.002 por elemento con unidad item.

Dónde aparece NFD en el trabajo de ingeniería real

Como esta capacidad es un motor parse puro, el precio de la API es la base publicada de $0.002 por elemento correcto y la validación fallida no consume saldo.

Pruebas golden estables entre plataformas

Fuerce las cadenas de fixture a NFD para que las aserciones de igualdad pasen tanto si los datos llegaron precompuestos como si ya venían descompuestos.

Ver la documentación completa del KIT →