Акценты JavaScript / HTML / Unicode: á! = Á - PullRequest
5 голосов
/ 20 января 2011

Я хочу проверить, совпадает ли введенная пользователем строка со строкой в ​​моем ключе ответа. Иногда в словах используются испанские акценты (как в сабадо), и это делает условие всегда ложным.

У меня есть журнал Firebug $('#answer').val(), и он отображается как sábado. (á исходит от кнопки, которая вставляет значение á, если это имеет значение), тогда как запись ответа с помощью ключа ответа показывает sábado (как я написал его в фактическом ключе ответа).

Я попытался заменить &aacute в ключе ответа на обычный á, но он все еще не работает и приводит к появлению алмазного знака вопроса в Юникоде. Когда я делаю это, а также заменяю значение кнопки, которая отправляет пользователю á, условие работает правильно, но тогда кнопка, строка пользователя и строка ответа имеют странный Unicode diamond-question-mark .

Я также пытался использовать á в обоих местах, и он ничем не отличается от использования á. И мой HTML, и Javascript используют charset="utf-8".

Как я могу это исправить?

Ответы [ 2 ]

4 голосов
/ 20 января 2011

Если вы постоянно используете UTF-8, нет необходимости в HTML-сущностях, кроме как для кодирования синтаксиса (т. Е. <, >, & и - внутри атрибутов - ").

Для всего остального используйте правильные символы, и ваши проблемы должны исчезнуть - пока вы не столкнетесь с проблемами нормализации Юникода, то есть с разницей между 'a\u0301' и '\u00E1' ...

0 голосов
/ 20 января 2011

Проблема в том, что вы не используете настоящие символы UTF-8 в обеих строках (введенный ответ и ключ).Вам НЕ следует указывать «кнопку, которая вставляет значение» - Re: «если это имеет значение», то это действительно так!И ваша строка сравнения также должна содержать только utf-8 символов.Это НЕ должно быть персонажем.

...