2012-08-01 5 views

Odpowiedz

34

dla Pythona 2:

>>> import urllib2 
>>> print urllib2.unquote("%CE%B1%CE%BB%20") 
αλ 

dla Pythona 3:

>>> from urllib.parse import unquote 
>>> print(unquote("%CE%B1%CE%BB%20")) 
αλ 

A oto kod, który działa we wszystkich wersjach:

try: 
    from urllib import unquote 
except ImportError: 
    from urllib.parse import unquote 

print(unquote("%CE%B1%CE%BB%20")) 
+0

wielkie dzięki! to zrobiło dokładnie to, co chciałem! – hakermania

+19

Dla ** Python 3 **: 'import urllib.request'' urllib.request.unquote (...) ' – user136036

9

Istnieją dwa kodowania w grają. Twój ciąg został najpierw zakodowany jako UTF-8, a następnie każdy bajt został percent-encoded.

Aby uzyskać oryginalny łańcuch z powrotem trzeba najpierw cytatu go, a następnie dekodować go:

>>> import urllib 
>>> s = '%CE%B1%CE%BB%20' 
>>> result = urllib.unquote(s).decode('utf8') 
>>> print result 
αλ 

Należy pamiętać, że trzeba włączoną Unicode konsoli w celu wyświetlenia wartości (jeśli pojawi się błąd z instrukcja drukowania, spróbuj uruchomić ją w IDLE).

+0

wielkie dzięki! dekodowanie ("utf8") było dla mnie bezużyteczne. nieokreślony (a) wykonał zadanie! – hakermania

+0

to nie działa. – Frank

+0

Ale tak jest. Próbowałem go po bezpiecznej stronie (IDLE, py2.7) –

Powiązane problemy