import urlliburl = 'http://test.com/s?wd=哈哈' #如果此網(wǎng)站編碼是gbk的話,需要進(jìn)行解碼,從gbk解碼成unicode,再從Unicode編碼編碼為utf-8格式。url = url.decode('gbk', 'replace')PRint urllib.quote(url.encode('utf-8', 'replace'))結(jié)果: http%3a%2f%2ftest.com%2fs%3fwd%3d%e5%93%88%e5%93%88(2) url解碼:import urllibencoded_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') #反過來函數(shù)調(diào)用的參數(shù)以及結(jié)果都是utf-8編碼的,所以在對(duì)url編碼時(shí),需要將參數(shù)串的編碼從原始編碼轉(zhuǎn)換成utf-8,對(duì)url解碼時(shí),需要將解碼結(jié)果從utf-8轉(zhuǎn)換成原始編碼格式。依據(jù)網(wǎng)站采用的編碼不同,或是gbk或是utf-8,賦賦予不同的編碼,進(jìn)行不同的url轉(zhuǎn)碼。GBK格式,一個(gè)中文字符轉(zhuǎn)為%xx%xx,共兩組;utf-8格式,一個(gè)中文字符轉(zhuǎn)為%xx%xx%xx,共三組。 >>> import sys,urllib >>> s = '杭州' >>> urllib.quote(s.decode(sys.stdin.encoding).encode('gbk')) %BA%BC%D6%DD >>> urllib.quote(s.decode(sys.stdin.encoding).encode('utf8')) '%E6%9D%AD%E5%B7%9E'a = "墨西哥女孩被拐4年接客4萬次 生的孩子成為人質(zhì)-搜狐新聞" print urllib.quote(urllib.quote(a))進(jìn)行兩次編碼轉(zhuǎn)換后,會(huì)變?yōu)椋?25E5%25A2%25A8%25E8%25A5%25BF%25E5%2593%25A5%25E5%25A5%25B3%25E5%25AD%25A9%25E8%25A2%25AB%25E6%258B%25904%25E5%25B9.................................................................................這樣的形式。同樣需要兩次解碼后才能得到中文。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注