J'essaye d'encoder, de stocker et de décoder des arguments en Python et de me perdre quelque part sur le chemin. Voici mes étapes:Encodage/décodage d'URL avec Python
1) J'utilise le gtm_stringByEscapingForURLArgument
de google toolkit pour convertir correctement un NSString afin de le transmettre dans des arguments HTTP. 2) Sur mon serveur (python), je stocke ces arguments sous la forme u'1234567890-/:;()$&@".,?!\'[]{}#%^*+=_\\|~<>\u20ac\xa3\xa5\u2022.,?!\''
(notez que ce sont les touches standard sur un clavier iphone dans la vue "123" et la vue "# + =", la \u
et \x
caractères dans la présence de quelques préfixes monétaires comme livre, yen, etc.)
3) J'appelle urllib.quote(myString,'')
sur cette valeur stockée, probablement à% pour le transport les caractères d'échappement au client afin que le client peut unpercent leur échapper.
Le résultat est que j'obtiens une exception lorsque j'essaie de consigner le résultat de% d'échappement. Y at-il une étape cruciale que je néglige qui doit être appliquée à la valeur stockée avec le format \ u et \ x afin de le convertir correctement pour l'envoi sur http?
Mise à jour: La suggestion marquée comme la réponse ci-dessous a fonctionné pour moi. Je fournis quelques mises à jour pour répondre aux commentaires ci-dessous pour être complet, cependant.
L'exception que j'ai reçue a signalé un problème avec \u20ac
. Je ne sais pas si c'était un problème spécifique, plutôt que le fait que c'était le premier caractère Unicode dans la chaîne.
Ce \u20ac
char est l'unicode pour le symbole 'euro'. J'ai essentiellement trouvé que j'aurais des problèmes à moins que j'utilise la méthode urllib2 quote
.
Veuillez fournir les détails de l'exception et une trace si possible. –
Il semble que votre chaîne n'est pas une chaîne Unicode valide. J'ai essayé de l'imprimer simplement et il me donne l'erreur d'encodage pour le caractère de \ u20ac. –