2015-02-10 19 views
21

Cố gắng giải mã một chuỗi url-encoded theo cách sauLàm thế nào để giải mã một (gấp đôi) 'url-mã hóa' chuỗi trong python

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

gốc chuỗi là FireShot3 (2).png. Bất kỳ trợ giúp sẽ được đánh giá cao.

Trả lời: urllib.unquote_plus(urllib.unquote_plus(some_string)) do mã hóa kép.

+1

bản sao http://stackoverflow.com/questions/16566069/url-decode-utf- 8-in-python 100% –

+1

@ MarcusMüller: không hoàn toàn. Không có dữ liệu được mã hóa UTF-8 ở đó, chuỗi đã được mã hóa URL ** hai lần **. –

+0

Trong Python 2, 3 hoặc cả hai? Thư viện fn được sử dụng sẽ khác nhau – smci

Trả lời

27

Dữ liệu nhập của bạn được mã hóa double. Sử dụng Python 3:

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

Output:

'FireShot3+(2).png' 

bây giờ bạn có + trái.

Edit:

Sử dụng Python 2.7 nó dĩ nhiên là:

urllib.unquote(urllib.unquote('FireShot3%2B%25282%2529.png')) 
+0

Bạn đã sử dụng hàm 'urllib.unquote'. –

+5

'unqoute_plus' xử lý ký tự' + '. – user1986059

7

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

Các vấn đề liên quan