web-dev-qa-db-ja.com

pythonで(二重に) 'url-encoded'文字列をデコードする方法

次の方法で_url-encoded_文字列をデコードしようとしました

_some_string = 'FireShot3%2B%25282%2529.png'
import urllib
res = urllib.unquote(some_string).decode()
res
u'FireShot3+%282%29.png'
_

元の文字列はFireShot3 (2).pngです。任意の助けをいただければ幸いです。

回答:urllib.unquote_plus(urllib.unquote_plus(some_string))は、二重エンコードのためです。

21
user1986059

入力はエンコードされますdouble。 Python 3:

urllib.parse.unquote(urllib.parse.unquote(some_string))

出力:

'FireShot3+(2).png'

今、あなたは+左。

編集:

Python 2.7を使用するのはもちろんです:

urllib.unquote(urllib.unquote('FireShot3%2B%25282%2529.png'))
30
user1907906

urllib.unquote_plus(urllib.unquote_plus(some_string)) FireShot3 (2).png

9
user1986059