url中的query帶有特殊字符(不是url的保留字)時須要進行編碼。
函數
當url中帶有漢字時,須要特殊的處理才能正確編碼,如下都只針對這種情形,固然也適用於純英文字符的url。編碼
(1) url編碼:url
import urllibspa
url = 'http://test.com/s?wd=哈哈'3d
url = url.decode('gbk', 'replace')code
print urllib.quote(url.encode('utf-8', 'replace'))utf-8
結果: http%3a%2f%2ftest.com%2fs%3fwd%3d%e5%93%88%e5%93%88test
(2) url解碼:import
import urllibim
encoded_url = 'http%3a%2f%2ftest.com%2fs%3fwd%3d%e5%93%88%e5%93%88'
print urllib.unquote(encoded_url).decode('utf-8', 'replace').encode('gbk', 'replace')
函數調用的參數以及結果都是utf-8編碼的,因此在對url編碼時,須要將參數串的編碼從原始編碼轉換成utf-8,
對url解碼時,須要將解碼結果從utf-8轉換成原始編碼格式