2015-02-10 45 views
21

試圖通過以下方式如何將(雙)「URL編碼」在Python

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

原始的字符串是FireShot3 (2).png解碼url-encoded串串解碼。任何幫助,將不勝感激。

答案: urllib.unquote_plus(urllib.unquote_plus(some_string))由於雙重編碼。

+1

重複http://stackoverflow.com/questions/16566069/url-decode-utf- 8-in-python 100% – 2015-02-10 12:12:29

+1

@MarcusMüller:不完全。這裏沒有UTF-8編碼數據,該字符串已被URL編碼**兩次**。 – 2015-02-10 12:14:09

+0

在Python 2,3還是兩者兼而有之?使用的庫文件將有所不同 – smci 2017-11-14 18:28:59

回答

27

您的輸入編碼爲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')) 
+0

您已經使用'urllib.unquote'函數。 – 2015-02-10 12:18:05

+5

'unqoute_plus'處理'+'字符。 – user1986059 2015-02-10 12:47:31

7

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