2015-02-10 9 views
21

provato la decodifica di una stringa di url-encoded nel seguente modoCome decodificare un (doppiamente) 'URL-encoded' stringa in Python

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

stringa originale è FireShot3 (2).png. Qualsiasi aiuto sarebbe apprezzato.

Risposta: urllib.unquote_plus(urllib.unquote_plus(some_string)) a causa della doppia codifica.

+1

duplicati http://stackoverflow.com/questions/16566069/url-decode-utf- 8-in-python 100% –

+1

@ MarcusMüller: non del tutto. Non ci sono dati codificati UTF-8, la stringa è stata codificata URL ** due volte **. –

+0

In Python 2, 3 o entrambi? La libreria fn usata differirà da – smci

risposta

27

L'input è codificato doppio. Utilizzando Python 3:

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

uscita:

'FireShot3+(2).png' 

Ora avete l'+ sinistra.

Edit:

Usare Python 2.7 è, naturalmente, è:

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

Hai già utilizzato la funzione 'urllib.unquote'. –

+5

'unqoute_plus' gestisce il carattere' + '. – user1986059

7

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

Problemi correlati