Javascript проверяет ввод пользователя по желаемому набору символов (кодировка) - PullRequest
4 голосов
/ 19 августа 2011

Сценарий таков:

Пользователь копирует текст с веб-сайта, используя кодировку Win-1252 для своего набора символов. Этот текст затем отправляется в базу данных, которой я управляю с помощью набора символов ISO-8859-1 (это подмножество Win-1252). Есть ли в Javascript механизм, информирующий пользователя о том, что он пытается вставить «недопустимые» символы в систему? Предпочтение, если это может выделить указанные символы.

Общая форма этой проблемы состоит в том, что система A (отправляющая система) имеет набор кодировок, определенный как AsubE, а другая система B (принимающая система) имеет набор кодировок, определенный как BsubE. Когда BsubE находится внутри вселенной AsubE, это не проблема. Вопрос в том, когда BsubE не является подмножеством AsubE, как мы можем проверить ввод от пользователя.

Ответы [ 2 ]

3 голосов
/ 19 августа 2011

Поскольку некоторые символы не определены в подмножестве, вы можете использовать регулярное выражение для определения этих интервалов:

function isNotAllowed(char) {
    return /\x00-\x1f|\x7f-\x9f/.test(char); // 00 to 1f, or 7f to 9f
}

Для выделения символов также будет сложнее, но эта функция может стать ядромэто.

1 голос
/ 19 августа 2011

В JavaScript нет возможности сделать это. К счастью, ни Windows-1252, ни ISO-8859-1 не являются кодировками с переменной шириной, поэтому вы можете написать что-то в, скажем, .NET или что-то, что действительно понимает кодировки символов, чтобы создать регулярное выражение для проверки этого.

Например, в .NET вы можете создать байтовый массив с 256 байтами, по одному на каждый символ, а затем использовать каждую кодировку, чтобы получить соответствующую строку. Выясните различия в этих строках, закодируйте их в регулярное выражение, и все.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...