python中文轉換url編碼

        今天要處理百度貼吧的東西。想要作一個關鍵詞的list,每次須要時,直接添加 到list裏面就能夠了。可是添加到list裏面是中文的狀況(好比‘麗江’),url的地址編碼倒是'%E4%B8%BD%E6%B1%9F',所以需 要作一個轉換。這裏咱們就用到了模塊urllib。
>>> import urllib
>>> data = '麗江'
>>> print data
麗江
>>> data
'\xe4\xb8\xbd\xe6\xb1\x9f'
>>> urllib.quote(data)
'%E4%B8%BD%E6%B1%9F'
那咱們想轉回去呢?
>>> urllib.unquote('%E4%B8%BD%E6%B1%9F')
'\xe4\xb8\xbd\xe6\xb1\x9f'
>>> print urllib.unquote('%E4%B8%BD%E6%B1%9F')
麗江
細心的同窗會發現貼吧url中出現的是%C0%F6%BD%AD,而非'%E4%B8%BD%E6%B1%9F',實際上是編碼問題。百度的是gbk,其餘的通常網站好比google就是utf8的。因此能夠用下列語句實現。
>>> import sys,urllib
>>> s = '麗江'
>>> urllib.quote(s.decode(sys.stdin.encoding).encode('gbk'))
'%C0%F6%BD%AD'
>>> urllib.quote(s.decode(sys.stdin.encoding).encode('utf8'))
'%E4%B8%BD%E6%B1%9F'
>>>
另外一個方法
#!/usr/bin/python
import urllib
import sys
string = sys.argv[1]
string = unicode(string,"gbk")
utf8_string = string.encode("utf-8")
gbk_string=string.encode("gbk")
gbk=urllib.quote(gbk_string)
utf8=urllib.quote(utf8_string)
print gbk
print utf8
相關文章
相關標籤/搜索