我需要对外来名称进行url编码,例如“Misère”。
当我这样做时:
urllib2.quote(name)
我收到错误:
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'
我做错了什么?
答案 0 :(得分:12)
尝试:
urllib2.quote(s.encode('utf8'))
答案 1 :(得分:0)
对@苏妍倩的回答略有改进,就是在方法调用中加入安全字符。默认情况下,urllib2.quote()仅包含/
_
-
.
作为安全字符,这意味着将转换:
之类的字符,呈现网址无用的。
例如:
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
注意网址的https部分输出略有不同。
希望这可以节省别人花时间解决这个问题的时间!