Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

173
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda