2016-05-15 94 views
1

我有一个功能,下载一个网站的HTML代码与urllib3库。我正在使用request_encode_url函数通过GET传递参数,如果我不使用像'ñ'这样的特殊拉丁字符,它会正常工作。如果我使用'ñ',则网址编码不正确。例如,如果我传递了像“Elseñor”这样的参数,该函数会将其转换为“El + se?或or”而不是“El + se%F1or”。如何使用urllib3 request_encode_url编码拉丁字符?

z='El señor' 
fields={'sec':'search','value': z} 
http = urllib3.PoolManager() 
r = http.request_encode_url('GET', 'http://www.myurl.com/search.php',fields) 

预期网址必须是这样的:

http://www.myurl.com/search.php?sec=search&value=El+se%F1or 

但是,如果使用特殊字符,我得到下一个URL:

http://www.myurl.com/search.php?sec=search&value=El+señor 

有人能说我怎么可以传递参数的特殊字符编码一个正确的网址?

我使用Python 3.4

+0

如果我运行代码,我居然得到''http://www.myurl.com/search.php?sec=search&value=El+se %C3%B1or''作为请求的URL。这可能是源文件的编码问题吗? – dorian

回答

0

我找到了解决办法,也许这是一个愚蠢的事情,但我有Python中的较低水平。

我解决它编码字符串转换成LATIN1:

z='El señor' 
fields={'sec':'search','value': z.encode('latin1')} 
http = urllib3.PoolManager() 
r = http.request_encode_url('GET', 'http://www.myurl.com/search.php',fields)