2011-01-20 12 views
5

Quiero comprobar si una cadena enviada por el usuario es igual a la cadena en mi clave de respuesta. Algunas veces las palabras involucran acentos en español (como en sábado), y eso hace que la condición siempre sea falsa.Acentos JavaScript/HTML/Unicode: á! = Á

Tengo registro de Firebug $('#answer').val() y aparece como sábado. (El á proviene de un botón que inserta el valor á, si eso importa) mientras que el registro de la respuesta de la tecla de respuesta muestra sábado (cómo lo escribí en la clave de respuesta real).

He intentado reemplazar el &aacute en la clave de respuesta con un á normal, pero todavía no funciona, y da como resultado una marca de interrogación de diamante Unicode. Cuando lo hago y también reemplazo el valor del botón que hace á enviado por el usuario, la condición funciona correctamente, pero luego el botón, la cadena del usuario y la cadena de respuesta tienen el extraño signo de interrogación de diamante Unicode.

También he intentado usar á en ambos lugares y no es diferente de usar á. Tanto mi HTML como Javascript están usando charset="utf-8".

¿Cómo puedo solucionar esto?

+0

¿Puede dar alguna muestra en jsfiddle.net ? –

+1

Parece que en un caso estás comparando 's & aacute; bado' con' sábado', que es, por supuesto, 'falso'. En otro caso, está comparando 's bado' con' sábado', que también es 'falso'. Parece un problema simple de codificación ...? – deceze

+0

¿Qué devuelve esa propiedad '.length' de cada cuerda? ¿Qué tal '' CarAt (1) '? – Gabe

Respuesta

4

Si usted está constantemente utilizando UTF-8, no es necesario para las entidades HTML, excepto para codificar sintaxis (es decir <, >, y & - dentro de los atributos - ").

Para cualquier otra cosa, utilice los caracteres apropiados, y sus problemas deben desaparecer - hasta que se ejecuta en cuestiones de normalización de Unicode, es decir, la diferencia entre 'a\u0301' y '\u00E1' ...

0

El problema es que no está utilizando los caracteres reales UTF-8 en ambas cadenas (respuesta introducida y la clave). NO debe proporcionar "un botón que inserta el valor & aacute;" - Re: "si eso importa" lo hace!

Los caracteres se deben agregar mediante el sistema de entrada de teclado. Y su cadena de comparación también debe tener solo 8 caracteres utf. NO debe ser entidades de caracteres.

+0

Gracias ... considerando que agregar por botón es realmente importante para mi programa, ¿hay alguna manera de convertir la entidad de caracteres a UTF-8 usando JavaScript? Mis habilidades de Google me están fallando. – user460847

Cuestiones relacionadas