2011-02-07 35 views
6

Tôi cần phải mã hóa url tên nước ngoài, như "Misère".Làm thế nào để đúng url mã hóa dấu?

Khi tôi làm:

urllib2.quote(name) 

tôi nhận được một lỗi:

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' 

Tôi đang làm gì sai?

Trả lời

12

thử urllib2.quote (s.encode ('utf8'))

+1

Điều đó có hiệu quả, cảm ơn! –

0

Một cải tiến nhỏ để trả lời @ 苏妍倩 's sẽ được bao gồm ký tự an toàn trong lời gọi phương thức. Theo mặc định, urllib2.quote() chỉ bao gồm /_-. làm ký tự an toàn có nghĩa là các ký tự như : sẽ được chuyển đổi, làm cho url vô dụng.

Ví dụ:

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 

Chú ý sự khác biệt nhỏ trong kết quả đầu ra trong phần https của url.

Hy vọng điều này sẽ giúp người khác tiết kiệm thời gian để tôi tìm ra điều này!

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