Проверка ASCII символов Javascript / Python - PullRequest
1 голос
/ 24 февраля 2012

Я застрял.У меня есть код Python, который общается с C ++ Wrapper, который имеет библиотеку Boost, которая использует String в качестве параметра.В моем коде Python я могу правильно говорить с этой оболочкой, если я использую str (x).Проблема заключается в том, что если я использую str ("£"), он возвращает escape-код.

Как я могу пропустить это в метод C ++ в виде строки, если сама строка возвращает шестнадцатеричный код.

Моя первая идея - использовать кодировщик и удалить символ.И вторая идея состоит в том, чтобы поставить на стороне серверный код javascript, чтобы в первом случае пользователь не вводил символ ascii.

Вот пример JS Lint.http://jsfiddle.net/M5Xqg/ Может ли кто-то настроить, почему он возвращает '£' в качестве действительного символа ascii.

Ответы [ 2 ]

2 голосов
/ 24 февраля 2012

Вы получаете это '\ xc2 \ xa3' с помощью str ("£"), потому что ваш интерпретатор Python преобразует символ "£" в UTF-8 (я думаю, это ваш стандарт по умолчанию).Если вы хотите получить строку ASCII, вы должны сделать «£» .encode ('ascii'), но вы получите исключение UnicodeDecodeError, потому что это не символ ASCII, поэтому вам нужна фильтрация.

Даже если высделайте проверку на стороне клиента с помощью JS, но запрос все еще может быть выполнен с использованием инструмента curl или чего-то подобного, поэтому было бы лучше иметь проверку на стороне клиента и фильтрацию на стороне сервера.

На стороне сервераВы можете сделать что-то вроде этого:

>>> s = "ascii text 123 £ 456 go go"
>>> t = filter(lambda x: x.isalnum(), s)
>>> print t
"ascii text 123  456 go go"

Но этот код отфильтрует все не буквенно-цифровые символы.Если вы хотите разрешить все печатные символы ASCII, попробуйте вместо этого:

>>> import string
>>> string.printable
'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~ \t\n\r\x0b\x0c'
>>> t = filter(lambda x: x in string.printable, s)
>>> print t
'ascii text 123  456 go go'
0 голосов
/ 24 февраля 2012

Если библиотека обернута в код Python, почему бы не выполнить проверку в Python, а не в Javascript? Ошибка в том, что Python не позволит вам сделать. В вашем заявлении if:

(asciiNumber = 20)

Должно быть:

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