Я пытаюсь кодировать и хранить и декодировать аргументы в Python и теряться где-то на этом пути. Вот мои шаги:
1) Я использую google toolkit gtm_stringByEscapingForURLArgument
для правильного преобразования NSString для передачи аргументов HTTP.
2) На моем сервере (python) я храню эти строковые аргументы как нечто вроде u'1234567890-/:;()$&@".,?!\'[]{}#%^*+=_\\|~<>\u20ac\xa3\xa5\u2022.,?!\''
(обратите внимание, что это стандартные клавиши на клавиатуре iphone в представлении "123" и "# + =", символы \u
и \x
в нем есть некоторые денежные префиксы, такие как фунт, иена и т.д.)
3) Я вызываю urllib.quote(myString,'')
по этому сохраненному значению, предположительно, чтобы% -escape их для транспорта на клиенте, чтобы клиент мог ускользнуть от них.
В результате я получаю исключение, когда пытаюсь записать результат% escaping. Есть ли какой-то важный шаг, который я упускаю из виду, который должен применяться к сохраненному значению с помощью формата \u и\x, чтобы правильно преобразовать его для отправки по http?
Обновление. Предложение, помеченное как ответ ниже, работало для меня. Тем не менее, я предоставляю некоторые обновления для удовлетворения приведенных ниже комментариев.
Исключение, которое я получил, вызвало проблему с \u20ac
. Я не знаю, была ли проблема с этим конкретно, а не тем фактом, что это был первый символ юникода в строке.
То, что \u20ac
char является юникодом для символа "евро". В основном я обнаружил, что у меня были бы проблемы с ним, если бы я не использовал метод urllib2 quote
.