Django文档有一个关于处理URL中非ASCII数据的字符串的[很好的部分]。特别是,它提供了以下关于如何转换Unicode字符串以在URL中使用的示例:
>>> 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'
然而,似乎没有关于如何进行逆向转换的迹象!
假设我的应用程序收到了网址/favorites/Fran%C3%A7ois/Paris%20%26%20Orl%C3%A9ans
,如何将其映射回/favorites/François/
和Paris & Orléans
?
没有django.utils.encoding.uri_to_iri
功能来补充django.utils.encoding.iri_to_uri
,并且没有django.utils.http.urlunquote
来补充django.utils.http.urlquote()
!
注意:
如果这有帮助,我正在使用Django 1.2
答案 0 :(得分:3)
在这种情况下,标准urllib.unquote()
应该可以正常工作:
>>> urllib.unquote('/favorites/Fran%C3%A7ois/Paris%20%26%20Orl%C3%A9ans')
'/favorites/Fran\xc3\xa7ois/Paris & Orl\xc3\xa9ans'
答案 1 :(得分:1)
那是因为urllib.unquote
为你做了这件事:
>>> import urllib
>>> print urllib.unquote('/favorites/Fran%C3%A7ois/Paris%20%26%20Orl%C3%A9ans')
/favorites/François/Paris & Orléans