æøå的Python urllib urlencode问题

时间:2010-10-22 12:55:59

标签: python urlencode urllib

如何使用特殊字符urøå?

对一个字符串进行urlencode

离。

urllib.urlencode('http://www.test.com/q=testæøå')

我收到此错误:(..

  

不是有效的非字符串序列或   映射对象

2 个答案:

答案 0 :(得分:26)

urlencode旨在获取字典,例如:

>>> q= u'\xe6\xf8\xe5' # u'æøå'
>>> params= {'q': q.encode('utf-8')}
>>> 'http://www.test.com/?'+urllib.urlencode(params)
'http://www.test.com/?q=%C3%A6%C3%B8%C3%A5'

如果您只想对单个字符串进行网址编码,那么您正在寻找的功能是quote

>>> 'http://www.test.com/?q='+urllib.quote(q.encode('utf-8'))
'http://www.test.com/?q=%C3%A6%C3%B8%C3%A5'

我猜UTF-8是正确的编码(它应该适用于现代网站)。如果你真正想要的是?q=%E6%F8%E5,那么你想要的编码可能是cp1252(类似于iso-8859-1)。

答案 1 :(得分:9)

您应该将字典传递给urlencode,而不是字符串。请参阅以下正确的示例:

from urllib import urlencode
print 'http://www.test.com/?' + urlencode({'q': 'testæøå'})