关闭

百度和Google的URL编码方式探索

标签: googleurl百度pythoncodecimport
5659人阅读 评论(13) 收藏 举报
分类:

今天才注意到,百度和Google的URL编码方式不一样。

比如我们搜“技术”这个词,然后观察IE地址栏。


用Baidu得到的结果是
http://www.baidu.com/s?wd=%BC%BC%CA%F5&cl=3

用Google得到的结果是
http://www.google.com/search?hl=zh-CN&q=%E6%8A%80%E6%9C%AF&lr=

即,baidu_urlencode("技术")=%BC%BC%CA%F5  , google_urlencode("技术")=%E6%8A%80%E6%9C%AF
,很明显不一样,那么两者分别用的是什么编码算法呢?

赶快拿出可爱的Python来帮我们解决问题吧。
>>> import urllib
>>> url=urllib.unquote('http://www.baidu.com/s?wd=%BC%BC%CA%F5&cl=3')
>>> url
'http://www.baidu.com/s?wd=/xbc/xbc/xca/xf5&cl=3'
>>> print url.decode('gb2312')
http://www.baidu.com/s?wd=技术&cl=3
>>>

很明显,baidu的url编码方式是gb2312。那么google呢?能否如法泡制?

>>> url2=urllib.unquote('http://www.google.com/search?hl=zh-CN&q=%E6%8A%80%E6%9C%AF&lr=')
>>> url2
'http://www.google.com/search?hl=zh-CN&q=/xe6/x8a/x80/xe6/x9c/xaf&lr='
>>> print url2.decode('gb2312')
Traceback (most recent call last):
  File "<input>", line 1, in ?
UnicodeDecodeError: 'gb2312' codec can't decode bytes in position 40-41: illegal multibyte sequence

很遗憾,报错了,这是因为选择了gb2312解码是不对的。那就试试别的吧,可能是'utf-8'吧,go on

>>> print url2.decode('utf-8')
http://www.google.com/search?hl=zh-CN&q=技术&lr=

yeah,成功了。这说明google对url的编码是utf-8

 

Python is so cool!

 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:232681次
    • 积分:3744
    • 等级:
    • 排名:第8584名
    • 原创:118篇
    • 转载:15篇
    • 译文:0篇
    • 评论:232条
    文章分类
    最新评论