Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

200
Views
¿En qué casos funciona el método normalizar ('NFKC')?

Intenté usar el método normalize('NFKC') con diferentes caracteres, pero no funcionó. Afortunadamente, no puedo decir esto de NFC . Cuando es posible, normalize('NFC') siempre reemplaza múltiples puntos de código con uno solo. Por ejemplo:

 let t1 = `\u00F4`; //ô let t2 = `\u006F\u0302`; //ô console.log(t2.normalize('NFC') == t1); //true

Y aquí hay un ejemplo con NFKC que nunca funciona:

 let s1 = '\uFB00'; //"ff" let s2 = '\u0066\u0066'; //"ff" console.log(s2.normalize('NFKC') == s1); //false

Pensé antes que NFKC reemplaza múltiples puntos de código con el único que representa un carácter compatible. En pocas palabras, pensé que NFKC reemplazaría \u0066\u0066 con \uFB00 .

Si NFKC no funciona así, entonces... ¿cómo funciona?

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

La cuestión es que NFKC (así como NFKD ) admite normalización compatible y canónicamente equivalente.

Unicode

El tipo de descomposición completa elegido depende de la forma de normalización Unicode involucrada. Para NFC o NFD, uno hace una descomposición canónica completa, que utiliza solo valores canónicos de Decomposition_Mapping. Para NFKC o NFKD, se realiza una descomposición de compatibilidad completa, que utiliza valores de Decomposition_Mapping canónicos y de compatibilidad.

Y eso es completamente comprensible porque como dice MDN :

Todas las secuencias canónicamente equivalentes también son compatibles, pero no al revés.

Pero también vale la pena notar que NFKC hace normalizaciones compatibles y canónicamente equivalentes de diferentes maneras. La normalización canónicamente equivalente por NFKC se produce de la misma manera que NFC . Por ejemplo:

 //"ô" (U+00F4) -> "a" (U+006F) + " ̂" (U+0302) -> "â" (U+00F4) let c1 = `\u006F\u0302`; //ô console.log(c1.normalize('NFKC').length); //1

Pero la normalización compatible por este parámetro funciona de manera diferente. La especificación dice:

El formulario de normalización KC no intenta asignar secuencias de caracteres a compuestos de compatibilidad. Por ejemplo, una composición de compatibilidad de “oficina” no produce “o\uFB03ce”, aunque “\uFB03” es un carácter que es el equivalente de compatibilidad de la secuencia de tres caracteres “ffi”. En otras palabras, la fase de composición de NFC y NFKC es la misma; solo difiere su fase de descomposición, y NFKC aplica descomposiciones de compatibilidad.

Por ejemplo:

 //"ff"(U+FB00) -> "f"(U+0066) + "i"(U+0066) -> "f"(U+0066) + "i"(U+0066) let c2 = '\u0066\u0066'; //ff console.log(c2.normalize('NFKC').length); //2

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!