La documentation de Django comporte une [bonne section] sur la gestion des chaînes avec des données non-ASCII dans les URL. En particulier, il présente l'exemple suivant sur la façon de transformer les chaînes Unicode dans les URL:Gestion de l'IRI dans Django
>>> urlquote(u'Paris & Orléans')
u'Paris%20%26%20Orl%C3%A9ans'
>>> iri_to_uri(u'/favorites/François/%s' % urlquote(u'Paris & Orléans'))
'/favorites/Fran%C3%A7ois/Paris%20%26%20Orl%C3%A9ans'
Cependant, il semble y avoir aucune indication sur la façon d'effectuer la transformation inverse!
En supposant que mon application reçoive l'adresse URL /favorites/Fran%C3%A7ois/Paris%20%26%20Orl%C3%A9ans
, comment puis-je mapper cela à et Paris & Orléans
?
Il n'y a pas de fonction django.utils.encoding.uri_to_iri
pour compléter django.utils.encoding.iri_to_uri
et il n'y a pas django.utils.http.urlunquote
pour compléter django.utils.http.urlquote()
!
Remarque:
Si cela aide du tout, j'utilise Django 1.2 sur
- Python 2.5, Debian Linux 32 bits
- Python 2.6, Windows 7 64 bits .
Whoa, c'est bizarre! 'urllib.quote()' ne gère pas les données unicode, mais 'urllib.unquote' gère très bien UTF-8! Ça marche! –
Pas tout à fait. 'urllib.unquote()' renvoie un bytestring, et c'est à vous de le décoder depuis UTF-8. 'urllib.quote()' attend un bytestring aussi, il gère très bien unicode si vous codez d'abord la chaîne unicode en UTF-8. –
Exemple: 'urllib.quote ('u'ad''encode (' utf8 ')) =>'% C3% A0% C3% A8% C3% A6'' –