私が行った場合
url = "http://example.com?p=" + urllib.quote(query)
/
エンコードされない%2F
(OAuth正規化が壊れる)- Unicode は処理されません (例外がスローされます)
もっと良い図書館はありますか?
ベストアンサー1
urllib.parse.quote(string, safe='/', encoding=None, errors=None)
エスケープを使用して文字列内の特殊文字を置き換えます
%xx
。文字、数字、および 文字は'_.-~'
引用符で囲まれません。デフォルトでは、この関数は URL のパス セクションを引用符で囲むことを目的としています。オプションの safe パラメータは、引用符で囲まない追加の ASCII 文字を指定します。デフォルト値は です'/'
。
つまり、安全''
を渡すと最初の問題は解決されます。
>>> import urllib.parse
>>> urllib.parse.quote('/test')
'/test'
>>> urllib.parse.quote('/test', safe='')
'%2Ftest'
(この機能quote
はurllib
urllib.parse
Python 3 では次のようにします。
ちなみに、urlコード。
2つ目の問題については、それについてのバグレポートこれは Python 3 で修正されました。
Python 2では、次のようにエンコードすることで回避できます。UTF-8このような:
>>> query = urllib.quote(u"Müller".encode('utf8'))
>>> print urllib.unquote(query).decode('utf8')
Müller