2011-02-07 7 views
6

Potrzebuję urodować kodować obce imiona, takie jak "Misère".Jak prawidłowo zakodować akcenty kodujące?

Kiedy zrobić:

urllib2.quote(name) 

dostaję błąd:

File "/System/Library/Frameworks/Python.framework/Versions/ 
2.5/lib/python2.5/urllib.py", line 1205, in quote 
    res = map(safe_map.__getitem__, s) 
KeyError: u'\xe8' 

Co robię źle?

Odpowiedz

12

try urllib2.quote (s.encode ('utf8'))

+1

To działało, dziękuję! –

0

Nieznaczna poprawa na @ 's 苏妍倩 odpowiedzią byłoby to bezpieczne znaki w wywołaniu metody. Domyślnie funkcja urllib2.quote() zawiera tylko /_-. jako bezpieczną postać, co oznacza, że ​​znaki takie jak : zostaną przekonwertowane, co spowoduje, że adres URL będzie bezużyteczny.

Na przykład

url = https://www.zomato.com/pittsburgh/caffè-damore-catering-pittsburgh 
print urllib2.quote(url.encode('utf-8')) 
>>> https%3A//www.zomato.com/pittsburgh/caff%C3%A8-damore-catering-pittsburgh 

print urllib2.quote(url.encode('utf-8'),':/') 
>>> https:////www.zomato.com/pittsburgh/caff%C3%A8-damore-catering-pittsburgh 

Wskazówki niewielka różnica w wyjść w części https URL.

Mam nadzieję, że to oszczędza komuś innemu czas, jaki zajęło mi zrozumienie tego!