2016-05-15 98 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)