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

184
Views
El carácter especial devuelve un punto de código incorrecto

Tenemos un problema con la lectura de caracteres especiales de nuestra base de datos. Tenemos la codificación de caracteres configurada como UTF-8 en todas partes y la base de datos aparentemente almacena todos los caracteres correctamente. Por ejemplo, tenemos una palabra con é y se ve bien en la pantalla. También en los objetos de respuesta JSON, el carácter se ve bien (con el acento) e incluso aparentemente funciona cuando copiamos al portapapeles y pegamos. Pero cuando hacemos una comparación estricta é === é obtenemos false como resultado. Resulta que la é almacenada devuelve el código de caracteres 101, que es una e sin el acento (no el código de caracteres esperado 233 ).

  • é = código 233
  • é = código 101

Demostraré el problema incluso aquí en este fragmento de código: ambos caracteres tienen el mismo aspecto pero uno de ellos genera 233 y el otro 101 .

 // é = 233 // é = 101 console.log("é".charCodeAt()); console.log("é".charCodeAt());

¿Por qué está pasando esto? Aparentemente, el hecho de que el carácter sea una e con acento se almacena de alguna manera correctamente en la base de datos (parece correcto), pero no se muestra como se esperaba al cliente. ¿Cómo podemos hacer cumplir que el carácter se lea correctamente como una e con un acento como é (código 233)?

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

0

Mi respuesta estaba aquí: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/normalize

La segunda é es en realidad 2 caracteres: la e y un carácter combinado para el acento. La solución es llamar a .normalize() y luego puedo comparar estrictamente.

 // é = 233 (one single char) // é = 101 (actually 2 characters, first is "e") console.log("é".length); console.log("é".length); // Normalizing will return char 233 and then strict comparison will work. console.log("é".normalize() === "é");

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!