2011-01-20 23 views
5

Voglio verificare se una stringa inviata dall'utente è uguale alla stringa nella mia chiave di risposta. A volte le parole coinvolgono accenti spagnoli (come in sábado), e questo rende la condizione sempre falsa.Accenti JavaScript/HTML/Unicode: á! = Á

Ho il registro Firebug $('#answer').val() e si presenta come sábado. (Lo á proviene da un pulsante che inserisce il valore á, se ciò è importante) mentre la registrazione della risposta dal tasto di risposta mostra sábado (come l'ho scritto nella chiave di risposta effettiva).

Ho provato a sostituire il &aacute nel tasto di risposta con un normale á, ma ancora non funziona, e si traduce in un diamante-punto interrogativo Unicode. Quando lo faccio e sostituisco anche il valore del pulsante che rende l'utente inviato á, la condizione funziona correttamente, ma poi il pulsante, la stringa utente e la stringa di risposta hanno tutti il ​​bizzarro Unicode domanda-diamante.

Ho anche provato a utilizzare á in entrambi i punti e non è diverso dall'utilizzo di á. Sia il mio HTML che Javascript stanno usando charset="utf-8".

Come posso risolvere questo?

+0

Può darci qualche campione in jsfiddle.net ? –

+1

Quindi sembra che in un caso si paragoni 's & aacute; bado' a' sábado', che è ovviamente 'false'. In un altro caso stai confrontando 's bado' con' sábado', che è anche 'false'. Sembra un semplice problema di codifica ...? – deceze

+0

Cosa restituisce il valore '.length' di ciascuna stringa? Che ne dici di '.charAt (1)'? – Gabe

risposta

4

Se stai usando costantemente UTF-8, non c'è alcuna necessità di entità HTML, tranne per codificare la sintassi (cioè <, >, & e - all'interno di attributi - ").

Per tutto il resto, utilizzare i caratteri corretti, ei tuoi problemi dovrebbero andare via - fino a quando si esegue in problemi unicode normalizzazione, cioè la differenza tra 'a\u0301' e '\u00E1' ...

0

Il problema è che non si utilizzano i caratteri UTF-8 reali in entrambe le stringhe (risposta immessa e chiave). NON dovresti fornire "un pulsante che inserisce il valore & aacute;" - Re: "se questo è importante" lo fa!

I caratteri devono essere aggiunti dal sistema di input della tastiera. E anche la stringa di confronto dovrebbe essere solo di utf-8 caratteri. NON dovrebbe essere entità di carattere.

+0

Grazie ... considerando che aggiungere per pulsante è davvero importante per il mio programma, c'è un modo per convertire l'entità personaggio in UTF-8 usando JavaScript? Le mie competenze di Google mi stanno deludendo. – user460847

Problemi correlati