Djangoのドキュメントには、URLにASCII以外のデータが含まれている文字列を処理するための[すばらしいセクション]があります。特に、それはURLで使用するUnicode文字列を変換する方法については、次の例を示します:DjangoでのIRIの処理
>>> 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çois/
とParis & Orléans
にその背中をマッピングしない、私のアプリケーションは、URL /favorites/Fran%C3%A7ois/Paris%20%26%20Orl%C3%A9ans
を受けると仮定すると?
django.utils.encoding.iri_to_uri
を補完する機能はありません。補完するにはdjango.utils.http.urlunquote
がありません。django.utils.http.urlquote()
!
注:これがすべてで助けている場合
、私は
- 上のPython 2.5をDjangoの1.2を使用している、DebianのLinux 32ビット
- のPython 2.6、Windows 7の64ビット版。 標準
urllib.unquote()
は、このケースではうまく動作するはず
おっと、それは奇妙です! 'urllib.quote()'はUnicodeデータを扱いませんが、 'urllib.unquote'はUTF-8をうまく処理します!できます! –
'urllib.unquote()'はバイト文字列を返します。UTF-8からデコードするのはあなた次第です。 UTF-8に最初にUnicode文字列をエンコードした場合、 'urllib.quote()'はバイト文字列も期待しています。 –
例: 'urllib.quote(u'ąčę.encode( 'utf8'))=> '%C3%A0%C3%A8%C3%A6'' –