Проблемы с непечатными символами - PullRequest
0 голосов
/ 23 декабря 2010

Я использую сканер штрих-кода для считывания двумерной матрицы данных, штрих-кодов UID в веб-приложение. UID содержат непечатные символы ASCII RS, GS и EOT. Моя проблема заключается в том, что браузер автоматически добавляет HTML-код в начало каждого символа ASCII и, поскольку для RS, GS и EOT не определены HTML-коды, он подходит.

Я использую Javascript для динамического построения строки из отсканированных данных, вот пример того, что я получаю

091 [041) 062> 030RS

Как видите, символу RS присваивается значение (030), которое не существует в качестве стандартного HTML-кода. Другая проблема, по-видимому, заключается в том, что при обращении к обычному буквенному символу браузер воспринимает его как возврат каретки (CR), поэтому предшествующие им значения кратко отображаются, а затем исчезают.

Я хочу, чтобы была возможность показать всю строку в текстовом поле браузера. У меня есть функция javascript, которая ищет эти непечатаемые символы и заменяет их на буквы, т. Е. RS будет заменен на конкатенацию 'R' и 'S'. Но у меня все еще есть проблема схожего с браузером, как объяснено выше. Любое понимание приветствуется.

UPDATE:

Привет, Мэтью, извини, что не уточнил. Я попробовал функцию замены следующим образом с флагом замены всех:

string.replace (/ (030) | (029) | (004) / г, "");

Проблема в том, что она заменяет всю строку, поэтому

091 [041) 062> 030RS

становится

/ (030) | (029) | (004) / г

1 Ответ

3 голосов
/ 24 декабря 2010

Я не уверен, правильно ли я понимаю вашу проблему, но почему бы просто не запустить функцию замены строки перед записью в DOM? Если непечатные символы никогда не будут напечатаны, проблем не будет.


Ответ на обновление

Вы можете сопоставлять непечатаемые символы с шестнадцатеричными значениями, используя регулярные выражения. Проверьте это для деталей. Вот быстрый пример:

uid.replace(/[\x30\x29\x04]/g,"")

(Обратите внимание, что функция replace() вызывается для экземпляра строки, а не для самого String.)

Чтобы сделать это более эффективным, рассмотрите возможность использования диапазона непечатаемых символов (т. Е. [\x00-\x1F\x80-\xFF]).

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